2014-09-22 56 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