我發現了一個令人費解的陣列,當我試圖把括號強調指針數組的聲明中(int *) ptr[N];
。C中的聲明'(int *)ptr [N]'是什麼意思?
GCC的C編譯器說:
error: ptr undeclared (first use in this function)
。
誰能解釋錯誤的由來嗎?
我發現了一個令人費解的陣列,當我試圖把括號強調指針數組的聲明中(int *) ptr[N];
。C中的聲明'(int *)ptr [N]'是什麼意思?
GCC的C編譯器說:
error: ptr undeclared (first use in this function)
。
誰能解釋錯誤的由來嗎?
這很簡單:變量ptr
尚未宣佈。不,(int *) ptr[N];
是不的聲明,它是一個數組下標表達式的類型轉換。
如果你想要一個指針數組,你應該做的
int *ptr[N];
這是鑄造ñ陣列ptr
的第i個元素爲整數的指針。
本身指向一個ptr
該錯誤是從未宣佈過。你忘了或刪除我的misstake這樣一行:
int *ptr[123];
有關N
這似乎是它通常例如定義一個constand像這樣:
#define N 42
也許你可以做到這一點
typedefine int* INT_PTR;
INT_PTR ptr[N];
我覺得編譯器會投PTR [N]輸入(INT *),就像
int a;
double b;
b = (double)a;
所以(int *)ptr [N] dosen已經留下了值,並且你從未聲明過ptr。 然後gcc編譯器會告訴你未聲明的。雖然無助於你的具體問題,這兩個引用可能來方便以後對類似的問題
:[Clockwize /螺旋規則(http://c-faq.com/decl/spiral.anderson.html)和[CDECL; C Gibberish <->英文](http://cdecl.org/) – damienfrancois