我是C语言的新手。我对C中的指针感到困惑。
这是一个简短的程序:
void main() {
int *array_ptr,big_array[20];
array_ptr=big_array;
}
在这里,当我们将指针等同于数组的名称时,C会将数组的第一个元素的地址分配给该指针,因为它知道这array_ptr
是一个指针并将存储一个地址。而在这种情况下,
void main() {
int i, *x;
x = i;
}
在这里,它将引发一个错误。在这种情况下,我们必须使用&i
将其分配给指针x
。为什么我们需要&
在整数/浮点数等情况下使用,而在数组的情况下则不需要使用呢?
区别在于,当指定的数组名称不带下标时,C会替换指向数组第一个元素的指针。因此,如果您有一个int
名为的数组array
,则:
array === &array[0]
用于分配指针类型时。区别仅在于类型- int
(和所有基本类型)与数组(数组是类型的集合)的处理方式不同。因此,指针的工作方式也不同,这仅仅是知道编译器如何处理它们的问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句