如何仅使用一个指针p2来初始化2个元素的数组的值?
我知道数组名称a是一个指向数组中第一个元素的地址的指针,所以我这样做了:
int a[2];
p2 = a; //set pointer to address of a[0]
*p2 = x; //set value of a[0] to value of x
cout << "The address of the first element in a is: " << &p2 << endl;
现在,我的问题在于尝试使用相同的指针将a中的第二个元素初始化为y的值。这是我尝试过的:
p2 = a+1;
*p2 = y;
cout << "The address of the second element in a is: " << &p2 << endl;
当我打印出两个元素的地址时,它们的地址相同,但是它们应该不同,因为它们位于具有不同值的不同地址。任何帮助表示赞赏。谢谢。
编辑:谢谢大家的答复。他们非常有帮助。这就是我最终要做的:
int a[2];
p2 = a;
*p2 = x;
*(p2+1) = y;
cout << "The address of the first element in a is: " << p2 << endl;
cout << "The address of the second element in a is: " << p2+1 << endl;
答案 0 :(得分:2)
我假设您定义了int * p2;
然后,你的意思是
int a[2];
p2 = a; //set pointer to address of a[0]
*p2 = x; //set value of a[0] to value of x
cout << "The address of the first element in a is: " << p2 << endl; // (1)
p2 = a+1;
*p2 = y;
cout << "The address of the second element in a is: " << p2 << endl; // (2)
在下表中,我显示了点(1)和(2)处各种表达式的内容
p2 &p2
(1) address of a[0] address where p2 is stored
(2) address of a[1] address where p2 is stored
&p2
不包含a[0]
的地址(即p2
),而是存储该值(即该地址)的地址。
因此,当您增加p2
时(您也可以完成p2++
),&p2
不会改变。
p2
是一个指针,您要使用它遍历数组元素这一事实可能会引起混乱,但这是无关紧要的。