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

beg*_*gun 1 c++ arrays pointers

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

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

现在如果我abvia 覆盖a=b- 指针指向哪里?

指针仍然指向它们的原始位置,a但它们指向的值现在是那些b

小智 13

数组不能在C++中赋值.声明数组后:

int a[10];
Run Code Online (Sandbox Code Playgroud)

没有办法覆盖它,只能改变它包含的值.具体来说,你做不到:

int a[10], b[10];
a = b;    // cannot work in C++ (or C)
Run Code Online (Sandbox Code Playgroud)

如果动态创建数组并指定指针:

int * a = new int[10];
int * p = a + 1;
int * b = new int[10];
a = b;
Run Code Online (Sandbox Code Playgroud)

然后指针p仍然指向第一个数组,但是你有内存泄漏.

对于包含数组的结构:

struct S {
    int a[10];
};

S s1, s2;
int * p = s1.a + 1;
s1 = s2;
Run Code Online (Sandbox Code Playgroud)

然后指针p仍指向第一个结构的数组,但数组内容将被第二个结构中的数组内容覆盖.

  • 虽然有趣的是,您可以分配两个仅包含常量大小数组的结构,在这种情况下,它会将数组的元素从一个复制到另一个. (3认同)