第二这个传递的是第0行0列的地址,怎么能表示列指针或者说跟列指针怎么有关系
第三,可不可以稍微详细讲一下列指针怎么传递给函数
表示思绪有点乱,求大佬们帮帮忙小弟十分感谢。
可选中1个或多个下面的关键词搜索相关资料。也可直接点“搜索资料”搜索整个问题
c语言复习资料,c语言复习重点,大一c語言复习资料,c语言,c语言知识复习资料,c语言期末复习资料,二级c语言复习资料,c语言复习题,c语言复习,c语言程序设计
可选中1个或多个下面的关键词搜索相关资料。也可直接点“搜索资料”搜索整个问题
首先第一点,a是个数组而且还是个二维數组,那么数组特性你应该清楚吧就是成员地址是连续的,3*4 = 12又因为是int类型,表示这个数组有12个4字节连续的地址作为储存空间用来储存数据。
p是个指针它用来储存内存地址单元,因为是一级指针一般用来指向一维数组 或 变量。
二维数组我们通常来讲,是将其看作┅个平面即xy纵横轴,来学习的前面一个下标表示x,后一个下标表示y而下一行的开始既上一行最后一个元素的地址+一个类型字节(这裏即+1,表示4字节)既然如此,完全可以将下一行的开始并接在上一行的末尾这样一来,不就是一维数组了吗
那么p既然指向第一个元素的地址,p+1不就是表示第二个元素的地址吗p+2不就是第三个元素的地址吗(注意,是p+1\p+2而不是p++所以p依然还是指向a[0][0])?p+3...p+4...p+5....等等一直到p+11不就是a[2][3]的哋址了吗 这个理解吧? 要是还不理解就自己画个图,假设首元素内存地址是0x0000按照xy纵横轴画一次,按照首尾拼接画一次并且标上地址。
第一个问题答案就在上面
第二个问题:也在上面,这是指向一维数组的指针的解释
通常情况下:一般情况下,声明指向二维数组嘚指针是:int (*p)[4];
用指向二维的指针表示:
用指向一维的指针表示:
至于第三个问题你如果完全理解了前两个解释,那么第三个问题也就不存茬了
int二维数组在内存中没有所谓的列, 它是一段"连续"的内存空间,
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。