关于c语言 把数组名赋予指针的问题。

2025-02-09 19:18:3978 次浏览

最佳答案

你的理解从本质上就有问题

int *p1=a不能通过编译,因为a是二维数组指针,类型是int (*)[3],无法转换到int*型。必须用int (*p1)[3]=a或者int *p1=a[0]才可以。同理int p2=a[0]无法通过编译,因为a[0]是一个int指针而不是一个int元素,必须用int *p2=a[0]才可以。

a代表二维数组,它指向的是一维数组a[0]的地址,该地址恰好和a[0][0]的地址相等,但类型上有着本质区别,a是一个是int*数组的指针而a[0]是一个int*元素的指针。a[0]代表的是二维数组a的第一行,是一个一维数组,指针a[0]是int*型,它指向该一维数组的首元,即a[0][0]的地址。

声明:知趣百科所有作品均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请在页面底部查找“联系我们”的链接,并通过该渠道与我们取得联系以便进一步处理。