类型  普通指针 指针数组(非指针类型) 数组指针 结构体指针 函数指针 二重指针
定义方式 int *p; int *p[5];

int (*p)[5];

int a[3][5];

struct{...int i;..}a, *p

int (*p)(int,int);

int add(int a,int b)

int **p1;

int *p2;

int *p3[5];

赋值方式 p=&a; —— p=a; p=&a p=add;

p1=&p2;

p1=&p3;

解引用 *p=10; ——

p[1][2]=5;

*(*(p+i)+j)=5;

p->i=10;

*p(10,20)

一般可以简写为p(10,20);

*p1=(int*)0xffff;

 

  • 指针数组与数组指针

指针数组 int *p[5]; p为数组,数组存储的为指针。

数组指针 int (*p)[5]; p为指针,指向一个一维数组。

  • 以指针方式访问数组

一维数组 int *p; int a[5];

    p=a;

    *(p+i)相当于a[i]

二维数组 int a[2][5];

对应指针 int (*p)[5];//p为指针,指向数组长度为5 的一维指针

    p=a;

    *(*(p+i)+j)相当于a[i][j];

分析:内层的p为数组指针,所以解引用后 *(p+i)是p指向的值,为一个一维数组的首地址。再次解引用*(*(p+i)+j),才为这个数组内的值。

 

相关文章:

  • 2021-12-15
  • 2021-05-30
  • 2021-10-18
  • 2021-05-18
  • 2021-06-02
  • 2021-08-17
  • 2021-12-15
猜你喜欢
  • 2022-12-23
  • 2022-01-19
  • 2022-12-23
  • 2021-09-06
  • 2021-05-23
  • 2021-12-05
  • 2021-04-19
相关资源
相似解决方案