引用一下C专家编程的话,加深一下记忆.
原文:当提到数组时,就把它看作是一种向量,也就是某种对象的一维数组,数组的元素可以是另一个数组.当看到"数组的数组的数组"时,其中每一个单独的数组都可以看作是一个指针.这是因为在表达式中的数组名被编译器当作"指向数组第一个元素的指针".数组指针所指向的数组的维数不同,其区别会很大(指的是他们所增长的步长不同).
另外,数组和指针可交换性的情况只有两种.一,把一个数组定义为函数参数时,可以选择把它定义为组数,因为不管你定义为数组指针还是组数,在函数内部事实上获得的都是一个指针.二,对数组进行访问时,可以以指针的形式操作,因为下标(a[1])操作,会被编译器"改写"或解析为像*(a+1)这样的指针访问!然后剩余的其他情况下,指针和数组都不能交换,这个一定要明确.
记住,指针始终是指针,他绝不可以改写成数组.
例如:
int a[2][3][5];//定义3维数组
int (*b)[5]=a[0];//a[0]返回的是第二维数组的第一个元素的指针,这个指针指向一个有5整形变量的数组
int *c=a[0][0];//a[0][0]返回的是第三维数组的第一个元素的指针,这个指针指向一个整形的变量
阅读(1713) | 评论(0) | 转发(0) |