beg*_*gun 1 c++ arrays pointers
假设我有一个数组a和一个数组b.两者具有相同的类型和大小但值不同.
现在我创建3个左右的指针指向a中的不同元素,你可以说a[0],a[4]和a[13].
现在如果我a用bvia 覆盖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仍指向第一个结构的数组,但数组内容将被第二个结构中的数组内容覆盖.