如何創建一個接收數組作爲參數的正確函數?在下面的代碼中,結果應該是36,但在我的函數中只顯示4.它似乎只是通過第一個元素。C++數組和函數
void test(float v[]){
printf("size: %d\n", sizeof(v)); //RESULT: 4
}
int main(){
GLfloat vv[] = {
0, 0, 0,
1, 1, 0,
1, 0, 0
};
printf("size: %d\n", sizeof(vv)); //RESULT: 36
test(vv);
return 0;
}
+1注:在C++中,如果你正在致力於用固定的數組,你可以使用引用參數,例如'template foo(float(&ar)[N])',它也會用'sizeof(ar)'報告正確的大小。 –
WhozCraig
2013-03-09 06:52:42
@WhozCraig:確實是+1。我對Q體育提升c和C++標籤的早期懷疑是,這純粹是一個c問題。 – 2013-03-09 06:56:45
從編寫廣義解決方案的角度來看,在大多數情況下,將迭代器傳遞給'begin'和'end'會不會更好?然後該函數可以應用於數組,或者同樣適用於'std :: vector',例如。 – DavidO 2013-03-09 08:16:54