我得到了這個代碼:
void f1(int** p1);
void f2(int p2[][]);
void f3(int p3[3][5]);
我們可以假設,sizeof(int) = 4, sizeof(void*) = 8
我需要從這些答案中選擇所有正確的答案:
sizeof(p3) == 3*8, sizeof(*p3) == 5*4, sizeof(**p3) == 4sizeof(p2) == 8, sizeof(*p2) == 8, sizeof(**p2) == 4sizeof(p1) == 8, sizeof(*p1) == 8, sizeof(**p1) == 4sizeof(p1) == 8, sizeof(*p1) == 8, sizeof(**p1) == 8sizeof(p3) == 8, sizeof(*p3) == 8, sizeof(**p3) == 4sizeof(p3) == 8, sizeof(*p3) == 5*4, sizeof(**p3) == 4sizeof(p2) == 8, sizeof(*p2) == 8, sizeof(**p2) == 8
所以我選擇了答案no。2、3、6,我在 3 和 6 上是正確的,但 2 是錯誤的。很高興解釋為什么 2 是錯誤的,只有 3 和 6 是正確的。
uj5u.com熱心網友回復:
這個引數的宣告
void f2(int p2[][]);
在 C 中無效。最右邊的下標運算子必須有一個運算式。
你可以寫例如
void f2(int p2[*][*]);
但在這種情況下,您可能不會取消參考指標。這樣的宣告只能出現在不是函式定義的函式宣告中。
相反,你可以寫例如
void f2( size_t n, int p2[*][n]);
在這種情況下,函式內sizepf( p2 )將等于8,sizeof( *p2 )將等于n * sizeof( int ),**p2將等于sizeof( int )。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/494233.html
下一篇:如何從函式C 回傳動態字符陣列
