将基地址分配给指针

时间:2014-06-19 02:11:46

标签: c pointers

我指的是Yashwant Kanetkar的一本名为“Let Us c”的书 我对这个例子感到有点困惑,他给指针指定了一个基地址 示例:

int x[10] = {1,2,3,4,5,6,7,8,9,10,11};  
int *p = x; // base address of x assigned to *p  
//************// 
int z[10] = {1,2,3,4,5,6,7,8,9,10,11};
int *q = &z[0]; // base address of z assigned to *q  

如果两者具有相同的功能,那么为什么使用不同的符号?这样做还有其他原因吗?

3 个答案:

答案 0 :(得分:0)

在赋值中使用数组的名称时,就像第一种情况一样,数组衰减为指向第一个元素地址的指针。

在第二种情况下,表达式z[0]按值为您提供数组的第一个元素,当您在表达式中添加&符号&时,您将获得呈现该元素的元素的地址第一种情况的结果相同。

答案 1 :(得分:0)

  

两者都是一样的。通过使用基本索引,您可以遍历为数组分配的内存。在这种情况下访问[10];因为数组被定义为最多包含10个元素,所以不正确。   第二种表示法主要用于指定特定元素的地址,& x [n]

答案 2 :(得分:-1)

同一结果的两个不同符号表明x,数组,实际上只是一个指针,而x[0],一个元素,是一个实际值。这只是C中用同样的东西说多种方式的很多例子之一(有点像英语)。