在程序中我们打印了数组a中每个数组元素的值和其相应的地址,同时也定义了一个数组指针,int (*ptr)[10]; ,在引用数组指针的过程中必须要注意的是数组指针的维数必须要引用的数组维数相同,否从会出错。我们可以把int (*ptr)[10]; 拆开来看,把指针ptr看成是指向int [10];的类型,把int [10]视为一种新的类型,所以在使用指针ptr的时候类型必须要一致,即必须是一个int [10]这样的数组。
对以上的代码稍加修改:
#include <stdio.h> void main() |
运行结果如下:
可能有的读者看了int arr[4][4];int (*ptr)[4]; 这两句代码之后认为接下来的代码ptr=arr;有错,因为arr是一个二位数组,而ptr只是一个指向int [4]类型的指针。但是要注意了,从运行结果我们也可以肯定的是上面的代码是正确的,但是为什么是正确的呢?!首先我们把arr分为两部分来看,第一部分为int [4],第二部分为arr[4],这样就一目了然了,我们可以认为我们定义了一个一维数组arr[4],数组有四个元素,每个元素的类型为int [4],因此和一般的数组一样,我们可以将该数组名赋给指针,其实也就是第一个元素的地址付给指针。即: ptr=arr;或者ptr=&arr[0]。其余情况以此类推。
下面再来看看一段代码:
#include <stdio.h> void sum(int s[]) } void main(int argc,char *argv[]) |