簡體   English   中英

未指定第二維時將2D數組傳遞給函數時的編譯器錯誤

[英]Compiler error when passing 2D array to a function without specifiying 2nd dimension

為什么這樣做:

void SomeFunction(int SomeArray[][30]);

但這不是嗎?

void SomeFunction(int SomeArray[30][]);

直觀上,因為編譯器無法為第二個聲明中的形式元素計算恆定大小。 那里的每個元素都具有int[]類型,該類型在編譯時不知道大小。

正式地,因為標准的C ++規范不允許該語法!

您可能要使用C ++ 11的std::arraystd::vector模板。

因為在將數組作為參數傳遞時,第一個[]是可選的,但是第2個之后的參數是必需的。 那是語言語法的慣例。

而且,您實際上不是在傳遞數組,而是指向元素數組的指針[30] 為了獲得更好的解釋,請查看以下內容:

T a1[10], a2[10][20];
T *p1;    // pointer to an 'int'
T (*p2)[20];  // pointer to an 'int[20]'

p1 = a1;  // a1 decays to int[], so can be pointed by p1
p2 = a2;  // a2 decays to int[][20], so can be pointed by p2

還請記住, int[]int*另一種形式,而int[][20]int (*)[20]另一種形式

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM