1.有一个二维数组 int a[3][4],对于a相关的一些指针,具体含义如下:
对于一位数组int a[10],a是数组首元素的地址,&a是整个数组的地址。所以a+1和&a+1的步长不一样,前者的步长是4,后者的步长是40。
2.定义一个数组类型
typedef int (myArray)[10];
myArray a;
上面这两句的含义和:
int a[10];
作用是相同的。
3.定义一个数组指针:
typedef int (*mypAyyar)[10]; //mypArray是指向一维数组的指针数据类型
mypArray pa; //pa的步长是sizeof(int)*10=40 //pa是指向一维数组的指针变量
//pa是一个指向一维数组的指针(相当于一个二级指针),要让它指向一维数组int a[10],应该这么写:
pa = &a //注意:pa的步长和&a的步长是相等的,都是40,而a的步长是4,所以不可能是pa = a。可以参考一下int* p=NULL;int b=10;p=&b;数组指针的操作和对元素指针的操作是类似的。
当然,也可以直接定义一个指向一维数组的指针变量:
int (*pb)[10]; //pb就是一个指向包含10个int元素的一维数组的指针变量,pb的步长是40
pb=&a;