我目前正在學習C++,所以如果我看起來有點傻,對不起。C++使用指針創建數組
我目前的練習,我堅持要求我編寫一個函數IndexArray(int n),它返回一個指向動態分配的具有n個元素的整數數組的指針,每個元素都被初始化爲它自己的索引。 (從工作表複製)。
我讀過幾次和不完全瞭解,但他們舉了一個例子:
假設IntPtr的聲明爲
int *intPtr;
聲明
intPtr = IndexArray(10);
應產生以下內存配置:
intPtr -> 0 1 2 3 4 5 6 7 8 9
從這個例子我猜我的函數需要創建一個大小爲n的數組,其值從0到n-1,然後另一個指針需要指向該數組。
這裏是他們的測試代碼:
int *values1;
values1 = IndexArray(10);
我知道如何輕鬆地創建數組,但我不完全理解指針足以知道要做什麼真的。我想返回一個數組會工作:
int *IndexArray(int n) {
cout << n << endl;
int arrayTemp[n];
for(int i = 0; i < n; i++) {
arrayTemp[i] = i;
}
return arrayTemp;
}
但是測試時,值1陣列不會從0-9所包含的值(雖然arrayTemp做所返回的權利之前)。
任何幫助將是驚人的,並希望我已經給你所需要的一切幫助。謝謝! :d
int arrayTemp [n]; => int * arrayTemp = new int(n);分配給int arrayTemp [n]的Beacuse內存將在返回arrayTemp後被釋放; – neohope 2013-03-14 05:14:53
這不是C++。 C++不支持VLA(可變長度數組)。標記已更改爲C – 2013-03-14 05:20:04
這是C++,它不是可變長度數組。數組的長度永遠不會改變。將長度發送到函數,並根據發送的長度創建數組的大小。那之後永遠不會改變。 – 2013-03-14 05:26:56