c语言,我做了一个数组,int arr[10];打印的是printf (int*)&arr 输

c语言,我做了一个数组,int arr[10];打印的是printf (int*)&arr 输出的值是 a[0]

对这个不太懂,arr本来就是地址 再用取址符,???请高手指教,谢谢

C语言中没有这种语法吧!
printf("%d", (int*)arr);相当于printf("%d", (int*)&arr[0]);
这里面arr是数组名,也表示数组的首地址,arr也是去数组的首地址,就是arr[0]的地址追问

我vc6.0编译可以通过的

追答

截图来看

追问

运行结果是8,9

追答

嗯,是的,&scirv是取了这个数组的地址,(int*)对这个地址进行了强制类型转换,他和scirv+1是一个效果
将其改为&scirv+1的结果就不一样了,是整个数组之后的一个元素,非法地址

追问

虽然非法可是取到了元素9啊,奇了怪

追答

这里面是合法的,因为有一个强制类型转换(int*)没有这个转换就非法了

温馨提示:答案为网友推荐,仅供参考