如果我定義了一個簡單的數組:extern在C中聲明二維數組?
int tableint[][2] = {
{1, 2},
{2, 4},
{3, 9},
{4, 16},
{5, 25}
};
和代碼在同樣的文件:
printf("Value = %d\n",sizeof(tableint));
printf("Value = %d\n",sizeof(tableint[0]));
printf("Num of rows = %d\n",sizeof(tableint)/sizeof(tableint[0]));
輸出爲預期:
Value = 40
Value = 8
Num of rows = 5
但是,如果我移動相同在一個單獨的文件「tableint」 2D陣列和保持上述打印語句在先前的主文件,但只是增加一個外部如下:
extern int tableint[][2];
我在下面的行得到一個錯誤:
printf("Value = %d\n",sizeof(tableint));
爲:的 '的sizeof' 不完全型 'INT [] [2]'
我好奇無效的應用程序要知道爲什麼當二維數組在同一個文件中時,它的工作原理,而不是當我將它移動到另一個文件時?
而且,如果我定義的extern的錯誤得到解決:
extern int tableint[5][2];
有什麼辦法,我並不需要提及的行數在這裏的extern?
還有其他選項,例如'extern tableint [] [2];'加上一些函數獲得的長度爲 –
@ M.M .:是的,如果OP不介意失去把尺寸看作*常量表達式*的能力。 – AnT
非常感謝! –