【发布时间】:2012-04-28 10:43:44
【问题描述】:
我想检查 (int * ) 和 (int []) 的区别。当我编译以下代码时,第一行运行良好。但是对于第 2 行,我的编译器给出了以下错误:
test.c:10: error: cast specifies array type
谁能告诉我这个错误的含义以及我在哪里做错了?
#include<stdio.h>
void abc(int *a)
{
int i;
for(i=0;i<2;i++)
{
printf("%d",((int * )a)[i]); //(1)
printf("%d",((int [])a)[i]); //(2)
}
}
int main()
{
int b[2]={0,1};
abc(b);
return 0;
}
【问题讨论】:
-
没有完全解决你的转换失败的原因,但stackoverflow.com/a/660812/567864 很好地解释了为什么
int*和int[]不是同一个东西,以及它们在编译器内部的不同之处。
标签: c