iOS Developer首页投稿(暂停使用,暂停投稿)程序员

C语言的数组指针与指针数组(One)

2016-06-25  本文已影响389人  遮天的龙

一、数组指针与指针数组:

数组指针与指针数组
理解*(arr +0)     &arr[0]     &arr[0]+1

a 表示第 0 行首地址, a+i 表示第 i 行首地址
*(a+i), a[i], &a[i][0]表示第 i 行第 0 个元素地址
*(a+i)+j, a[i]+j, &a[i][j]表示第 i 行第 j 个元素地址
*(*(a+i)+j) *(a[i]+j), a[i][j]表示第 i 行第 j 个元素

二、数组指针: int (*pName)[N];

对一维数组取地址,等价于数组指针而不是二级指针。
例如:

int arrray[10];
int(*pa)[10] = &array; 正确
int **pa = &array; 错误

指针 32位机下,大小均为4个字节;
指针的本质,就是一个有类型的常量地址;

  Type * var;
  type 决定了类型(步长),* 表示该变量是指针,var 用于存储地址;
  切记: 指针的运算是,地址值+类型的运算;

int [10]   printf("(int)&a[9]-(int)&a[4] = %d\n",
(int)&a[9] -(int)&a[4])=20;
(int)&a[9] 结果为int型数值了;
上一篇下一篇

猜你喜欢

热点阅读