将指针指定给变量vs将指针指定给C中的数组

时间:2017-09-30 18:02:09

标签: c pointers

嘿伙计们,我正在阅读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

2 个答案:

答案 0 :(得分:2)

这是因为在C编程中,数组的名称始终指向数组的第一个元素的地址。

使用示例进行更新:

例如: int arr [4];

enter image description here

arr和& arr [0]指向第一个元素。

由于两者的地址相同,因此arr和& arr [0]的值也相同。

答案 1 :(得分:0)

初始化像'int arr []'这样的数组时,数组'arr'的名称指向数组的第一个元素。 所以基本上是arr ==& arr [0]。这在编程时特别有用,因为在发送数组的值时只发送第一个元素的地址,而元素的其余地址都链接到第一个元素的地址。 因此,可以通过*(arr + i)访问数组中的元素,其中“i”表示元素的索引。