|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
小弟不才,之前一直单纯的认为二维数组名就是一个二级指针,可前段时间在写一个程序时发现二维数组传参形参不能写作二级指针的形式,而应该写作一个数组指针的形式,可是数组指针不是一个一级的指针吗,而且指向数组的宽度还是二维数组的列而不是行,那就说明这个数组指针里面的元素不是行指针了,那么二维数组名到底是个什么东西呀,求各位高手解答,不胜感激!
我来说说我的理解:
对内存空间来讲,二维数组由连续的一维数组拼接而成,中间没什么特殊标记,内存存储上和一维数组没什么区别。
二级指针指向首个一维数组的首元素地址,但它不知道每个一维数组的长度,那么问题就来了。比方说,一个int **p,它只知道每个数据都占用一个int的大小,而不知道一维数组的长度,它不知道第二个一维数组从哪里开始检索。比方说,我告诉你一个数10,而不告诉你进制,你知道这个数里的1代表的是二进制的2,还是八进制的8还是十进制的10吗?
而数组指针,它能指明每个一维数组的长度,比方说int (*p)[5],它知道每个数组是由5个int值构成的,你要找第二个数组的第二个元素,那程序就知道先跳过二维数组的前5个元素,从第六个元素开始数。
个人理解
|
|