C++ 指向不同数组的指针

标签 c++ arrays pointers

假设我有一个数组 a 和一个数组 b。 两者的类型和大小相同,但值不同。

现在我创建了 3 个左右的指针,指向 a 中的不同元素,你可以说 a[0]a[4]a[ 13]

现在,如果我通过 a=bb 覆盖 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/

相关文章:

内爆计数大于 2 的数组时出现 PHP INSERT 错误

arrays - 如何使用条件过滤自定义对象数组

c - 二维分配数组(固定列数)作为函数的返回值

c++ - 指向数组的指针,我错过了什么?

C++ 自动类型转换

循环内的 C++ std::thread 同步

c++ - C 和 C++ : Array element access pointer vs int

c++ - 将 double 类型的值写入文本文件

c++ - 使用模板打印一个类

c++ - 我有一个适用于整数的程序,但我需要让它也适用于小数