求助c语言问题!!!!!

定义int a[0][4],*p,*q[4];
为什么p=a;是错的
p=&a[2][1];是对的
p存的不都是地址吗?

此题考查二维数组指针变量;首先要了解存储单元的地址和存储单元的内容的区别;C语言程序中,可以定义整型变量、字符变量等来存放地址;如i_point=&i;而指向就是通过地址来实现的;一个变量的地址称为该变量的“指针”;指针变量就是地址变量,用来存放地址,指针变量的值是地址;如:int *p1;p1=&a;
而引用指针变量,有3种情况;给指针变量赋值p=&a;引用指针变量指向的变量;应用指针变量的值等;
a是数组名,p是指向数组元素的指针变量;一维数组中p=a[0]这种情况下相当于将p指向a【0】,p=&a格式是对的

参考资料:C语言程序设计第4版(清华大学出版社)

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-03-23
a是二维数组,p是一维指针,p=a,肯定错了,相等的话,将*p改为**p吧。
p=&a[2][1],是对的,因为&a[2][1]代表的是a[2][1]这个位置存放的数,相等的话就是说指针p指向了与&[2][1]这个数相等的位置。
第2个回答  2012-03-23
对啊,为什么p=a;是错的,改成p=a[0]就对了,p=a还不能获得a[0]的地址,而
p=&a[2][1];是对的追问

那p=&a;对吗???

追答

不对,二级指针首先要下一级的所指地址,也就是p=&a[1];可以

本回答被网友采纳
相似回答