的初始化正確的語法,我怎麼能初始化指針數組用C正確一個指向數組的指針
這裏是我的代碼
int (*data[10]);
int a[10];
data = &a[0]; /* gives a warning "int *" cannot be assigned to entity of "int (*)[10]" */
我怎樣才能擺脫這種警告?
的初始化正確的語法,我怎麼能初始化指針數組用C正確一個指向數組的指針
這裏是我的代碼
int (*data[10]);
int a[10];
data = &a[0]; /* gives a warning "int *" cannot be assigned to entity of "int (*)[10]" */
我怎樣才能擺脫這種警告?
int **data;
int a[10];
data = &a;
你可以定義建議的資料其他:int (*date)[10];
但我相信使用它作爲一個雙指針將使更多的降神要數組的大小從10更改爲其他任何一天!
因爲'&a [0]'被分配給'int **'是一個'int *',所以這段代碼不會乾淨地編譯。 – 2015-02-12 06:30:46
你說得對,修好了。 – 2015-02-14 17:06:54
變量data
是一個指針數組,你試着給它分配一個指針。如果你想聲明data
爲指針,你必須重新安排括號的數組:
int (*data)[10];
我建議你閱讀有關clockwise/spiral rule。
聲明指針正確的數組:
int (*data)[10];
分配一個指針數組它:
int a[10];
data = &a;
謝謝....它的作品... – user2314818 2013-04-24 13:57:41
我相信你的括號是錯誤的。您需要:
int (*data)[10];
請注意,您可以使用cdecl.org獲得有關這些事情的幫助。
爲了您的原代碼,它說:
申報數據指針數組10爲int
對於礦山,它說:
申報數據指針數組10的int
這將是'int(* data)[10]'.'int(* data [10] )''和'int * data [10]沒有什麼不同'' – 2013-04-24 13:57:17
我會使用'int ** date;'所以如果數組的大小將不得不改變它不需要兩個變化 – 2013-04-24 14:00:15
我正要回答這個問題問題。但是當我看到三個SO回答的重量級時退出了。 – 2013-04-24 14:05:14