如何在C++中正确使用数组:从静态数组到动态数组和std::array
大家好!我刚从Python开始学习C++,对数组完全是一团浆糊。在Python里,我直接写 `arr = [1, 2, 3]` 就能用。但这里……
我尝试写一个简单的程序,存储5个数字并输出它们的和。我这样写:
```cpp
int arr[5];
arr = {1, 2, 3, 4, 5};
```
但编译器报错:"array type 'int[5]' is not assignable"。好吧,我尝试直接初始化:
```cpp
int arr[5] = {1, 2, 3, 4, 5};
```
这成功了。但后来我需要把这个数组传给一个函数。我写了:
```cpp
void printSum(int arr[]) {
int sum = 0;
for(int i = 0; i < sizeof(arr)/sizeof(arr[0]); i++) {
sum += arr[i];
}
cout << sum;
}
```
然后更奇怪的事情发生了——`sizeof(arr)` 返回8(指针的大小?),而不是20(5 * 4字节)。为什么会这样?
另外,我读过关于 `std::vector` 和 `std::array` 的内容,但不知道什么时候该用哪个。我还看到有人写 `int* arr = new int[5]`——这简直是魔法。