我试图使用指针到达数组成员。Array的第一位成员地址是23fe20;当我写“ 1”时,程序必须显示23fe24(因为23fe20 + 4 * 1 = 23fe24),但不能以这种方式工作。程序输出为:23fe30 ..我可以使用*(pointer + i)来访问数组成员,但是我想使用地址。我怎样才能做到这一点?对不起,我的英语,非常感谢:'(
int main(int argc, char *argv[]) {
int array[5]={46,85,111,1976,2};
int *pointer,indices;
pointer=array;
int i=0;
printf("Array members : ");
for(i=0;i<=4;i++){
printf("%d ",array[i]);
}
printf("\n\n Array's First member' : %x\n\n",&*pointer);
printf("Which array member do you want to reach? ");
scanf("%d",&indices);
printf("\n Your member adress : %x",pointer+sizeof(int)*indices);
return 0; }
sizeof(int)
编译器已经为您计算了使用的地址。因此,您的计算将其指向其他位置(因为相同的计算执行了两次)。您只需向指针添加整数类型即可访问元素。
这样:
printf("\n Your member adress : %p",(void*) (pointer+indices));
您还应该%p
在其他打印地址的地方使用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句