关于数组在内存中的存储
比如定义一个数组 int b[3] = {3,1,2}, 则&b=b=&b[0],都是内存地址,假设为1000。那么内存地址1000中的数据到底是3呢还是1000呢?因为从&b=1000来看,地址为1000的内存存储的是b的值,也就是1000,而从&b[0]=1000来看,地址为1000的内存应该存储的b[0],也就是3。这如何解释呢
[解决办法]
一张木梯,第三层挂着一串腊肉
那么第三层存放的是到底是3还是腊肉呢?
3只是他的编号,不是他的内容
&b是返回数组b的地址,自然就是他的首地址了,为什么就一定要理解成b存放的是b的地址呢?
[解决办法]
&b=b=&b[0],都是内存地址,假设为1000.
只是表示它们所指向的地址都是1000.
实际上只有后两个b, &b[0]才是等价的,都表示指向数组的第一个元素.都为int型指针.
而&b是指向数组的指针,它也指向数组的首地址。
如在&b+1则表示指向数组b最后一个元素的下一个地址.
[解决办法]
&b=b=&b[0],//只能说他们代表的地址是同一个地址而已。
假设为1000。那么内存地址1000中的数据到底是3呢还是1000呢?//是3.
因为从&b=1000来看,地址为1000的内存存储的是b的值。//我不知道你这个是怎么得出来的,b它就是一个符号,它自己本身是没有所谓的地址空间。
[解决办法]
b 数组名,并不是指针,但是用于表达式或做函数参数时一般会被转化为指向第一个元素的指针
&b[0] 指向第一个元素的指针
&b 指向这个一维数组的指针,
后两个都是指针,并且指针值是相同的,但类型是不一样的。