看VC论坛中有对C的指针和数组有这样的说法:
1,数组名是一个const指针
2,一个指针的类型是由其所指向的类型决定的,判断两个指针的类型是否相同
就是判断其所指向的类型是否相同如:
若int*p,char *q,int a[];则p指向int变量,q指向char变量,所以 p和q类型不同
而p和a类型相同
这容易理解,当指针指向数组时,概念就复杂一些了如:
若int (*p)[],int a[][],int b[];则p是指向一维数组,而b是指向int类型的变量
所以p和b类型不同.而a是指向一维数组,所以p和a类型相同
3,[]和&的作用.事实上对于一个二维数组如:int a[3][3],a是指向一维数组的指针
当进行一次a[i]这样的运算后所得到的值是一个指针,其所指对象是一个int类型,
[]运算符的作用除了变址,还将一个行指针变为一个列指针,同理当进行一次&a[i]
这样的运算后所得到的指针又是一个指向一维数组的指针,即行指针
相对来说数组还是好理解的,只要不是与指针一起使用,但是他们有什么时候分开呢?
指针就是指向地址的标记,他的值不是内存地址的内容,这点总给我一种i节点的感觉。赫赫。
指针的类型决定了指针操作时该指针指向地址变化的规律。
我们可以把指针的类型归纳为二个特征:
1、基本数据类型如(char、int、 float等);
2、扩充数据类型(如一维数组、二维数组、结构等)