主题:还是关于指针
先贴代码:
int zippo[4] = {10, 20, 30, 40};
int * p = zippo;
printf("取值%d 地址%p\n", *p, p); /* 第一条printf */
printf("取值%d 地址%p\n", *p, p++); /* 第二条printf */
我心里认为打印的结果是:
取值10 地址0X22FF60
取值10 地址0X22FF60
因为第二条printf指针p使用的的++是后缀形式,可是真正的打印结果却很诡异
取值10 地址0X22FF60
取值20 地址0X22FF60
间接取值的结果为什么不一样?那从代码和实际打印的结果来看,好像顺序反了。。。
为了弄明白事情真相,我又改了代码:
int zippo[4] = {10, 20, 30, 40};
int * p = zippo;
printf("取值%d 地址%p\n", *p, p); /* 第一条printf */
printf("地址%p 取值%d\n", p++, *p); /* 第二条printf */
我心里认为结果是:
取值10 地址0X22FF60
地址0X22FF60 取值20
实际结果却是:
取值10 地址0X22FF60
地址0X22FF60 取值10
我觉得事情越来越诡异,顺序好像是反过来的……第二条printf的取值应该是zippo的第二个元素20啊,怎么会是10呢,纳闷。
我又改了代码,把两条printf语句整合成一条:
int zippo[4] = {10, 20, 30, 40};
int * p = zippo;
printf("取值%d 地址%p 地址%p 取值%d\n", *p, p, p++, *p);
我认为结果是:取值10 地址0X22FF60 地址0X22FF60 取值20
可是实际打印结果是:取值20 地址0X22FF64 地址0X22FF60 取值10
天啊,这都怎么回事啊?是编译器的问题还是自己的问题啊,那个地址是编译器给的,抄出来希望能更好讲述我的问题。我真是二丈和尚摸不着头脑啊,想了几天还是找不出个能解释这种现象的理由,实在是太郁闷了。
求讲解、求指点。最好能详细一些,我不知道因为怎样百度能找到我想要的答案……所以,求助没有办法的办法,我也知道自己想出来能自己最有帮助,可我实在是想不出,为何结果是这样的。哪里有说得不对请指出,我使用的编译器是Dev-c++
int zippo[4] = {10, 20, 30, 40};
int * p = zippo;
printf("取值%d 地址%p\n", *p, p); /* 第一条printf */
printf("取值%d 地址%p\n", *p, p++); /* 第二条printf */
我心里认为打印的结果是:
取值10 地址0X22FF60
取值10 地址0X22FF60
因为第二条printf指针p使用的的++是后缀形式,可是真正的打印结果却很诡异
取值10 地址0X22FF60
取值20 地址0X22FF60
间接取值的结果为什么不一样?那从代码和实际打印的结果来看,好像顺序反了。。。
为了弄明白事情真相,我又改了代码:
int zippo[4] = {10, 20, 30, 40};
int * p = zippo;
printf("取值%d 地址%p\n", *p, p); /* 第一条printf */
printf("地址%p 取值%d\n", p++, *p); /* 第二条printf */
我心里认为结果是:
取值10 地址0X22FF60
地址0X22FF60 取值20
实际结果却是:
取值10 地址0X22FF60
地址0X22FF60 取值10
我觉得事情越来越诡异,顺序好像是反过来的……第二条printf的取值应该是zippo的第二个元素20啊,怎么会是10呢,纳闷。
我又改了代码,把两条printf语句整合成一条:
int zippo[4] = {10, 20, 30, 40};
int * p = zippo;
printf("取值%d 地址%p 地址%p 取值%d\n", *p, p, p++, *p);
我认为结果是:取值10 地址0X22FF60 地址0X22FF60 取值20
可是实际打印结果是:取值20 地址0X22FF64 地址0X22FF60 取值10
天啊,这都怎么回事啊?是编译器的问题还是自己的问题啊,那个地址是编译器给的,抄出来希望能更好讲述我的问题。我真是二丈和尚摸不着头脑啊,想了几天还是找不出个能解释这种现象的理由,实在是太郁闷了。
求讲解、求指点。最好能详细一些,我不知道因为怎样百度能找到我想要的答案……所以,求助没有办法的办法,我也知道自己想出来能自己最有帮助,可我实在是想不出,为何结果是这样的。哪里有说得不对请指出,我使用的编译器是Dev-c++