本帖最后由 ZHYU 于 2015-8-13 23:37 编辑
多谢各位朋友的解答,答案已经出来了!
声明变量的时候,是存在栈空间,main函数中,从上往下,变量的地址从大到小,这里打印出了num1和num2的地址;0x
printf("%p\n",&num1);
printf("%p\n",&num2);
0x7fff5fbff79c
0x7fff5fbff798
所以,只需要将*a[0]++ 改为,*a[0]--即可!
再次感谢!
========================================================================================
求解:为什么下面的代码打印出来后最后一个值不是3,而是一个很大的数字呢?
int num1 =2,num2 = 3;
int *a[]={&num1,&num2};
printf("%p=====%d\n",a[0],*a[0]++);
printf("%p=====%d\n",a[0],*a[0]);
打印结果:
0x7fff5fbff7bc=====2
0x7fff5fbff7c0=====1606416408
|
|