读书人

数组与指针有关问题(在内存中怎么存放

发布时间: 2012-04-28 11:49:53 作者: rapoo

数组与指针问题(在内存中如何存放)
看图片:




指针P我明白,它在内存中的地址可以知道是:0x0012ff4c
且其地址所指的内存中存放的内容也是个地址(p的内容):0x0041573c
*p表示该地址:0x0041573c中的内容,即('gfedcba')。应该没说错吧?

但是,指针a(数组名也是个指针吧),有点搞不懂,是否他在内存中存放的地址就是:0x0012ff58 而且,
该地址中的内容就是:'a',或者说是:'abcdefg' 呢?
请大家指教下



[解决办法]
首先,数组名不是指针。
a指向的是一个字符数组。
数组的首地址为0x0012ff58。
而数组中第一个元素的地址也为0x0012ff58。
[解决办法]
感谢断帖.
0x0012ff58 是a在内存的地址,这是对的。
或者说 a等于0x0012ff58,a其实就是代表一个地址.但是C标准又规定,数组名再取地址(使用&),返回少一维的变量的首地址。
注意我上面说的,(规定)和(少一维)
规定就是非常规,不要按平时你去&取地址的知识去理解。一个立即数是没有地址的,所以C标准做了这样的规定。
少一维就是如果是二维,就变成一维,一维就变成一个变量。

楼主你该理解了吧

读书人网 >C语言

热点推荐