2013-04-24 157 views
4

的初始化正確的語法,我怎麼能初始化指針數組用C正確一個指向數組的指針

這裏是我的代碼

int (*data[10]); 
int a[10]; 
data = &a[0]; /* gives a warning "int *" cannot be assigned to entity of "int (*)[10]" */ 

我怎樣才能擺脫這種警告?

+1

這將是'int(* data)[10]'.'int(* data [10] )''和'int * data [10]沒有什麼不同'' – 2013-04-24 13:57:17

+0

我會使用'int ** date;'所以如果數組的大小將不得不改變它不需要兩個變化 – 2013-04-24 14:00:15

+0

我正要回答這個問題問題。但是當我看到三個SO回答的重量級時退出了。 – 2013-04-24 14:05:14

回答

-1
int **data; 
int a[10]; 
data = &a; 

你可以定義建議的資料其他:int (*date)[10];
但我相信使用它作爲一個雙指針將使更多的降神要數組的大小從10更改爲其他任何一天!

+0

因爲'&a [0]'被分配給'int **'是一個'int *',所以這段代碼不會乾淨地編譯。 – 2015-02-12 06:30:46

+0

你說得對,修好了。 – 2015-02-14 17:06:54

1

變量data是一個指針數組,你試着給它分配一個指針。如果你想聲明data爲指針,你必須重新安排括號的數組:

int (*data)[10]; 

我建議你閱讀有關clockwise/spiral rule

6
  1. 聲明指針正確的數組:

    int (*data)[10]; 
    
  2. 分配一個指針數組它:

    int a[10]; 
    data = &a; 
    
+0

謝謝....它的作品... – user2314818 2013-04-24 13:57:41

2

我相信你的括號是錯誤的。您需要:

int (*data)[10]; 

請注意,您可以使用cdecl.org獲得有關這些事情的幫助。

爲了您的原代碼,它說:

申報數據指針數組10爲int

對於礦山,它說:

申報數據指針數組10的int

相關問題