数组名与指针访问数组
文档内容节选
一个数组名代表的是数组中第一个元素的位置,通过数组名我们可以访问数组,先看下 面两个问题 问题一: int array10 int ptr10 ptrarray这里说明array是指向数组的指针,但为什么array是指向数组的指针 答一: 对数组名取地址在C标准里面是未定义的行为由于数组名是右值,而操作符要求操作 数具有具体的内存空间,换言之就是一个变量,因此对数组名取地址本来就是非法的, 早期的编译器明确规定这是非法的不过不知道什么原因,现在的编译器多数把array 定义为一个值跟array相同,类型是一个指向数组的地址,注意了,是地址,不是指针 之所以是指向数组的地址,是因为array是一个数组名,它就代表了int array10这个数组而ptr也是定义为一个指向具有10个int数的数组的指针,因此ar ray能被赋予ptr 问题二: 对于数组b,b是数组的地址,但b不算变量,有没有一个地方存放b而且b是不 是存放的就是自己所在的地址因为我碰到了如下的问题: 定义一个指针数组 char a2 那么a的值和a的值是不是应该一样 答二: 数组名是符号地址常量,在编译时求值并存在......
猜您喜欢
评论