我試圖找到一個數組的大小,sizeof不能正常工作大概是因爲我的數組是一個指針,而不是一個實際的數組(然後,我可能是錯的)。我是新來的C++,但不是編程。C++中的動態數組
這裏是我的功能:
int getSizeOfPointerArray(int a[]){
int n=0;
while(true){
if(!a[n]){
cout << "a[" << n << "] doesn't exist, breaking" << endl;
break;
}
cout << "a[" << n << "] exists with value " << a[n] << " at memory address " << &a[n] << endl;
n++;
}
return n;
}
調用函數與參數p其中p爲:
p = new (nothrow) int[f];
'F' 是3數組的元素收集與:
for(n=0;n<f;n++){
string c = ((n!=f-1)?", ":" ");
cout << p[n] << c;
}
我曾期待看到記憶數組中的三個元素的陽離子在輸出中打印出來 - 每四個相隔 - 並且說[4]不存在。相反,它打印六個內存地址。前三個值是正確的(所有3個),但最後三個值是-33686,-1414812757和另一個-1414812757。
這是爲什麼?我是否可以將最終結果除以2,還是不總是將指定的元素加倍?這與非動態數組相同嗎?
你在哪裏調用`getSizeOfPointerArray`?你如何初始化數組?數組的最後一個元素應該是0嗎? [示例代碼](http://sscce.org/)除了簡潔之外,還應該是完整和獨立的。你說得對,`sizeof`(當調用指向數組的指針時)不會返回數組的大小,它會返回指針的大小。 – outis 2011-01-30 10:14:28
http://stackoverflow.com/questions/381621/using-arrays-or-stdvectors-in-c-whats-the-performance-gap – Flexo 2011-01-30 10:14:45
@outis:我表明數組已初始化爲p = new(nothrow) INT [F]; – pighead10 2011-01-30 10:20:49