据我所知,数组名称就像指向第一个元素的指针。但是:
int c[]={0,1,2};
printf("%d \t %d",c,&c[0]); //Different values,Why?
那么为什么*c=0
?
答案 0 :(得分:11)
只是一个猜测:你在64位指针和32位int
的平台上。您的代码将两个指针值传递给printf
,然后将其解释为int
值;这可能会将64位指针的两半打印为两个独立的整数。
在将它们转换为%p
之后,您应该使用%d
而不是void*
打印指针。