嘿伙计们,我正在阅读tutorialspoint.com上的C指针
然而,为指针分配地址的一些不一致让我感到困惑。
举两个例子:
/* Assigning address of variable to a pointer */
int var = 20;
int *ip;
ip = &var;
/* Assigning address of an array to a pointer */
int array[] = {10, 100, 200};
int *ptr;
ptr = array;
为什么我们要分配一个变量的地址,如ip =& var。但是,当我们分配一个数组的地址时,'&'缺少字符,例如:ptr = array。
有人可以澄清这种混乱吗?这个例子来自tutorialspoint.com
答案 0 :(得分:2)
这是因为在C编程中,数组的名称始终指向数组的第一个元素的地址。
使用示例进行更新:
例如: int arr [4];
arr和& arr [0]指向第一个元素。
由于两者的地址相同,因此arr和& arr [0]的值也相同。
答案 1 :(得分:0)
初始化像'int arr []'这样的数组时,数组'arr'的名称指向数组的第一个元素。 所以基本上是arr ==& arr [0]。这在编程时特别有用,因为在发送数组的值时只发送第一个元素的地址,而元素的其余地址都链接到第一个元素的地址。 因此,可以通过*(arr + i)访问数组中的元素,其中“i”表示元素的索引。