二级指针与指针数组的关系 二级指针维护创建的数组是什么意思?
二级指针维护创建的数组是什么意思?
准确的说二维数组名是两个正指向常量的二级指针,因为它我总是朝固定设置的地址-指向一列数组的首地址。举个简单的例子,charta[5][5],aampa[0],
而指针数组名也是打向常量二级指针,是因为指针数组名总是会对准数组的第一个元素。举例子,chart*a[5],aampa[0].
这两个的同样区别是a[5][5]占25个字节,而a[5]占字节数是各个元素打向字符串的总长度
二维数组如何用指针表示?
二维数组也可以作成是指针的指针,b[][]**b;比如b
二维数组如何用指针表示?
[5]它是一个2行5列的二维数组,也可以看成是二级指针,三级存放的是行指针,接着每个行指针里面其实又是朝了5个列元素。*(*(bi)j),*(bi)是先取行指针,然后把j偏移到所要的列,然后把*取值就能得到i行j列的数据了。二维数组名为什么不能直接赋值给二级指针?
——又为何可以不int(*p)[n]a[i],而又不能pa[i]赋值(0im)
p是什么?p是需要是一个指针,贮放了一个包涵n个整型数据的数组(先不谈叫他数组甲)的地址,此时此刻我们是可以其实数组甲,是一个有很多个传说中的数组甲这样的元素组成的数组(我叫他数组乙,很看样子,乙是个二维数组,数组的数组)的首元素,数组甲的地址那是数组乙的首元素的地址,因为p就这个可以当做数组乙的名字来变量定义(二维数组名,也就是a)。
现在a是二维数组,先把a降维,看成是有m个元素横列的一维数组。那么a[0]是什么?是a这个现在被我暂时雷死一维的数组的首元素。对首元素取地址,那就是数组名。所以我不是a[0]。以此类推,aia[i]。那么a[0][0]又是什么?是对a取星以后的a[0]的首元素,也就是数组名,因此a[0]a[0][0],因为**不是a[0][0]*(*
(ai)j),但是这里ij是0。
因为,p这么大两个朝数组的指针,这个可以赋给它a[0]的地址(a的首元素地址,也就是a),paa[0],以此类推,pia[i]。因此你的pa[i]不对,a[i]是降维之后a的第i个元素同时又是个一维数组名,来表示a[i][0]地址,不能赋给一个对准整型数据的指针。而你的p是个对准数组的指针,变量赋值符号左右端类型完全不同,这上哪能赋值?
你后面这pa[i]语法上是确实不错,不过是满让p指针下移i个位置了,毕竟pia[i](举例你也赋值pa[0]),你这个不就等同于ppi,也就相当于pi。也不是个而且好的写法。
另外,如果没有你再定义一个int*q;然后再qa。这是是可以的,a是可以降维也也可以不降维再用。正当此时qa[0][0]
——在一维数组中却只能用pa,而肯定不能用pa.
在一位数组里面,你就得那样的话定义:int*p;这样的p里面存的是一个整型变量的“坑”的坑号。而二维空间数组a数组名不那是他自己首元素的坑的坑号?不过是可以变量pa。
pa意思是的是什么?a其实应该是一个地址,你的要再对a取地址,估计应该它本身,可是含义完全不同。非形参数组名都是指针常量,对指针常量取地址那就它本身(或则可没取不了地址,而且常量可能没地址)。
你也可以在编译器里面打看看看下会不会运行错误。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。