2014-09-22 51 views
1

我有int秒的數組,表示爲int* myInts[100];如何打印的int數組的索引

當我嘗試打印0 指數像這樣,

printf("%d\n",myInts[0]); 

我得到以下編譯器警告:

警告:格式 '%d' 期望類型 'INT' 的參數,但參數2 的類型是「* INT [-Wformat =]

這是爲什麼?

回答

4

如果你想要一個int陣列,其聲明爲

int myInts[100]; 

如果你想的int *陣列,打印作爲

printf("%p\n", (void *)myInts[0]); 
+0

爲什麼不與*? – Apollo 2014-09-22 04:47:57

+0

因爲*使它成爲一個指針數組。 – 2014-09-22 04:49:13

+0

「int *」表示指向int的指針,而「[100]」表示大小爲100的數組。總的來說,包含int指針的大小爲100的數組。 – 2014-09-22 04:49:22

1
int* myInts[100]; 

聲明一百指針數組整數,而不是你描述的一百個整數。

您需要使用:

int myInts[100]; 

代替。

1

int* myInts[100]; 它表示100個整數指針的數組。 int myInts[100]; 它表示100個整數的數組。

消除警告不喜歡 printf("%p\n", (void *)myInts[0]);

+0

您應該刪除第二個聲明中的'*'以匹配文本。 – mch 2014-09-22 06:21:15