Avatar ·

如何在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]`——这简直是魔法。