c语言中,关于指针int (*p)[4]和int *p指向二维数组a[3][4]初始化的问题。

为何前者初始化为:p=a或p=&a[0]
后者初始化为:p=*a或p=a[0]

前者是二级地址,就是地址的地址。后者是一级地址,虽然指向的也是一个地址,但是定义的时候申明的是一级地址。追问

二级地址是什么,它和一级地址有什么关系呢

追答

二级的就是地址的地址啊
申明的时候可以申明是多级的地址,虽然格式上和一级的一样,但是编译器回对其归类,逻辑上不同。因此使用的时候也要符合其逻辑。
只要是地址,格式个内容就是一样的,只是在什么的时候级别不用则在使用的时候要符合申明的逻辑

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-11-13
int (*p)[4]是一个数组指针,数组的每一个元素都是一个指针,都指向的是地址。后一个只是一个普通的指针
第2个回答  2012-11-13
二级地址是指针的指针,也就是这个指针存放的是一个指针,而不是地址。也就是int **
一级指针只是个指针 int *,这个指针存放的是一个地址
相似回答