我在主函數中創建了2個動態數組。我已經通過引用將它們兩個都傳遞給函數。然後我將數據從較小的動態數組複製到較大的動態數組。我刪除了較小的動態數組。將較大動態數組的地址分配給較小的動態數組。現在理想情況下,arr數組的大小應該是10.但是,當我嘗試在main中打印數組的第6個元素時,它會崩潰。請看看下面的代碼:動態數組傳遞給函數
#include <iostream>
#include <string>
using namespace std;
void func(string * arr, string * brr);
int main()
{
string* arr = new string[5];
arr[0] = "hello0";
arr[1] = "hello1";
arr[2] = "hello2";
arr[3] = "hello3";
arr[4] = "hello4";
string* brr = new string[10];
func(arr, brr);
for(int i = 0; i < 6; i++)
cout << arr[i] << endl;
return 0;
}
void func(string * arr, string * brr)
{
for(int i = 0; i < 5; i++)
brr[i] = arr[i];
for(i = 0; i < 5; i++)
cout << brr[i] << endl;
delete []arr;
arr = brr;
arr[5] = "hello5";
}
這不是討厭所有,但你可以使用一個參考的指針,如果你想:無效FUNC(字符串*改編,串* BRR) – Asaf 2012-02-06 21:37:37
@ Asaf我自己很少了解C++,但我一直認爲習慣C++避免了指針。不錯的建議。 – cnicutar 2012-02-06 21:38:16
[好文章在此](http://www.codeproject.com/Articles/4894/Pointer-to-Pointer-and-Reference-to-Pointer) – Samulk 2012-02-06 22:01:20