zoukankan      html  css  js  c++  java
  • C语言-指针

    1 指向函数的指针与返回值为指针的函数:

      1.1指针函数的指针:返回值类型 (*func) (参数列表)要求被调用的各个函数的参数的个数、类型及返回值类型都相同,这样就可以定义一个统一的处理函数,而入口参数就是指向函数的指针和具体的参数。调用时将实际的参数和函数名传递就可以了

      1.2 返回值为指针的函数:返回值类型 *func(参数列表)

    2 指针数组和指向指针的指针:

      2.0指针与数组的用法:int a[10],*p;p=a;

        A:p+i=a+i=&a[i],但可以p++而不可以a++因为a是数组的首地址是个常量;*p++=*(p++)因为*与+优先级相等,从右到左

        B:同等条件下指针操作速度快效率高。

        C:做函数参数时,数组名和长度作为两个参数。实参和形参都可以用数组或者指针,但注意指针做实参时必须先指向数组,否则编译出错。如

          {int *P,n; fun(p,n); void fun(int a[],int t) ...}因为实参指针没有指向任何变量。

      2.1 int a[m][n],(*P)[n];p=a; P=a=a+0=&a[0]

        p+m=&a[m];

        *(p+m)=&a[m][0] //变为列地址

        *(p+m)+i=&a[m][i]

        *(*(p+m)+i)=a[m][i]

      2.2 指针数组:类型名 *指针名[数组长度]

        指针数组的每一个元素是一个(类型名*)的地址,特别适合用来存储若干个字符串(虽然用二维数组也可以,但因为各个字符串的长度不等,而二维数组列数必须是确定的,这样就必须定义按照最长的那个字符串来定义列数,这样会造成空间的浪费,所以用指针数组就可以很好的解决这个问题)。如char *parry[]数组的长度也就是记录的条数,可以预先不指定。parry=parry+0=&parry[0]

      2.3指向指针的指针 :类型名**p,相当于 类型名*(*p)

      指针的指向元素的内容是一个指针,其实和指针数组地位时相同的,因而可以p=arry+i,printf("%s ",*p),其结果为arry[i]的内容

        

  • 相关阅读:
    mojoportal中弹出窗口
    css 层居中
    mojoportal中添加自定义javascript
    C#执行cmd [转载]
    异步委托 学习笔记
    Windows Sysinternals
    有关int,Int32的疑惑解答
    WEB Debug tools汇总
    规范很重要
    [笔记]VGA 接口电阻网络阻抗
  • 原文地址:https://www.cnblogs.com/jieruishu/p/3881189.html
Copyright © 2011-2022 走看看