2012-08-30 53 views
0

有設置數組上的元素的方法 - int rgArrayNum [] = {16, 2, 77, 40, 12071}; 如何在新的指針上使用相同的方法?我試過int *pArrayNum = new [] = {4 ,3 ,3} ;,但它沒有奏效。使用新的設置數組元素

回答

7

,你可以寫:

int *pArrayNum = new int[3]{4, 3, 3}; 

然而,在數組新的初始化是不允許的;你不得不成員從堆棧上的一組單獨或通過複製初始化:

int rgArrayNum [] = {16, 2, 77, 40, 12071}; 
int *pArrayNum = new int[sizeof rgArrayNum/sizeof rgArrayNum[0]]; 
std::copy(&rgArrayNum[0], &rgArrayNum[sizeof rgArrayNum/sizeof rgArrayNum[0]], 
    pArrayNum); 
+1

你需要一個'[3]'那裏。它不會從初始化列表推斷大小。 –

+0

@ecatmur:我試過你的代碼,並得到錯誤「沒有匹配函數調用'copy(int [5],int&,int *&)'」。我添加了#include 。我不是真的? – URL87

+0

@ URL87我在第二個參數上忘記了一個'&'。固定。 – ecatmur

3

在C++ 03和更早的版本,你不能初始化動態數組的值來任何東西,除了零。

可以實現類似於C++ 11的東西:

int *pArrayNum = new int [3] {4, 3, 3}; 

,或者如果你不介意使用的容器來管理你的記憶:

std::vector<int> array = {4, 3, 3}; 
+2

雖然'矢量'毫無疑問是優越的答案,你可以在沒有容器'new int [3] {4,3,3};'的情況下做到這一點。不過,我不明白爲什麼有人會想要。 –

+0

@ R.MartinhoFernandes:所以你可以。今天我學到了一些東西。 –

+0

@ R.MartinhoFernandes:它只是個例子,我的意思是動態元素的數量。 – URL87

0

你必須創建該數組不是整數,而是整數指針。

int* rgArrayNum2 [] = {new int(16), new int(16), new int(16), new int(16), new int(16)}; 

//test 
int* test = rgArrayNum2[2]; 
*test = 15; 

現在rgArrayNum2 [2]是15

+0

不確定這是OP想要的 – SirDarius

相關問題