这个问题是关于 C++
我一直认为C++中的数组名只是一个指针,所以我认为
int ar[10];
cout << sizeof(ar);
会给我一样的sizeof(int *)
。但它给出了 40 - 所以它是整个数组的实际大小。当数组大小由变量给出时,它也给出 40:
int n = 10;
int ar[n]
我想复制一个包含数组的类。如果它将与运算符一起分配,new
那么我应该在复制构造函数中手动复制该数组。但是恒定大小的数组呢?类是否仅包含指向数组的指针,还是包含整个数组?这里简单memcpy(...)
安全吗?
编辑:另一个例子:
int n;
cin >> n;
int ar[n];
cout << sizeof(ar);
它打印n * 4。我在 Linux 上使用 g++。
我什至试过这个:
class Test {
public:
int ar[4];
};
和
Test a, b, c;
a.ar[0] = 10;
b = a;
memcpy(&c, &a, sizeof(a));
a.ar[0] = 20;
cout << "A: " << a.ar[0] << endl;
cout << "B: " << b.ar[0] << endl;
cout << "C: " << c.ar[0] << endl;
它给出了:
A: 20
B: 10
C: 10
所以数组存储为类的一部分,可以用 memcpy 复制。但它安全吗?