假设我有一个数组 a
和一个数组 b。
两者的类型和大小相同,但值不同。
现在我创建了 3 个左右的指针,指向 a 中的不同元素,你可以说 a[0]
、a[4]
和 a[ 13]
。
现在,如果我通过 a=b
用 b
覆盖 a
- 指针会指向哪里?
指针是否仍然指向它们在 a
中的原始位置,但它们指向的值现在是 b
中的值?
最佳答案
数组在 C++ 中不可赋值。声明数组后:
int a[10];
无法覆盖它,只能更改它包含的值。具体来说,您不能:
int a[10], b[10];
a = b; // cannot work in C++ (or C)
如果动态创建数组并分配指针:
int * a = new int[10];
int * p = a + 1;
int * b = new int[10];
a = b;
那么指针 p 仍然指向第一个数组,但是你有内存泄漏。
对于包含数组的结构:
struct S {
int a[10];
};
S s1, s2;
int * p = s1.a + 1;
s1 = s2;
然后指针 p 仍指向第一个结构的数组,但数组内容将被第二个结构的数组内容覆盖。
关于C++ 指向不同数组的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2857917/