仅使用一个指针即可初始化数组中的元素?

时间:2019-03-13 01:28:30

标签: c++

如何仅使用一个指针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;

1 个答案:

答案 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是一个指针,您要使用它遍历数组元素这一事实可能会引起混乱,但这是无关紧要的。