【发布时间】:2013-03-10 12:56:07
【问题描述】:
大家好,我想了解一些关于指针和数组的理论知识。我希望有人能重申我对指针和数组概念的一些怀疑。
假设我有这样的事情
int ia[] = {0,1,2,3,4,5};
ia[2]; // =2
int* ip = &ia[0]; // pointer ip gets the address of element 0 in array ia
ip[2]; // ??
ip[2] = 42; //
大部分代码显然是理论上的,但我对最后两行有点不确定。首先是说 ip[2] 与说 ip 现在指向数组中的第二个元素一样吗?是否相当于说 *ip = ia[2] ?
我也对最后一行感到困惑。 ip[2] = 42;所以ip指向的对象的第二个元素,那个地址的值是42?或者这是一种解除引用的数组表示法?我只是对发生的事情有点困惑。
【问题讨论】:
-
ip[2];是一个有值的语句,它不做任何事情。这与说i;3;或main;相同。 AKA 它什么都不做。 -
哦,对不起,我的意思是……它的值是 2 吗?如果 ip 最初指向 ia 数组中的第一个元素,则 ip[2] 值为 2...但逻辑上我在这里丢失了...
-
这是一个什么都不做的语句。这就像写
;- 也是一个什么都不做的声明。相当于根本不写行。这样做对任何事情都没有任何作用。 -
@Patashu,我认为
main;无效(特别是由于 main 很特殊)。也许将其替换为;:) -
@chris 你试过了吗?