永发信息网

C语言,二维数组,指针。[Warning] assignment from incompatible pointer type [enabled by default]

答案:2  悬赏:80  手机版
解决时间 2021-01-08 22:41
  • 提问者网友:佞臣
  • 2021-01-08 18:34
C语言,二维数组,指针。[Warning] assignment from incompatible pointer type [enabled by default]
最佳答案
  • 五星知识达人网友:时间的尘埃
  • 2021-01-08 19:52
p=a[0]才正确!
a是二维数组,相当于二维指针
a[0]是第一行的地址,int *p,p是一维指针,只有p=a[0]才是合理的!追问但是,a和a[0],是相同的。所以,既然 可以 p=a[0],那就应该可以 p=a追答从数值的角度上来说你说的是对的!
但编译器是要检查类型匹配的
a是二维数组首地址,也是第一行的首地址,也是第一个元素的地址
a[0]是第一行的地址,也是第一个元素的地址
a[0][0]是第一个元素
从数值上讲a a[0] 甚至&a &a[0] &a[0][0] 都是相同的,但其表示的意义是不同的,也就是编译器要检查的类型匹配问题。 编译器为了最大程序保证编译出来的代码可靠运行,所以会进行相应的检查!
全部回答
  • 1楼网友:你哪知我潦倒为你
  • 2021-01-08 20:38
p =&a[0];这样子才是取到了第一行的数据。追问但是,a和a[0],是相同的。所以,既然 可以 p=a[0],那就应该可以 p=a
而且,DEV C++编译时,是通过的,只有一个warning而已。追答呵呵,可能你说的是对的,但在vs2010里是通不过的。我不知道dev c++这么高级的编译器。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯