C中数组指针的一些问题

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;

原文地址:https://www.cnblogs.com/jswu-ustc/p/8408774.html