第1个回答 2014-07-05
错误,要看变量占用的地址空间,这里是加sizeof(int)
printf("%d",*(p++));
printf("%d",*(p--));
两次输出结果怎么可能一样呢,
printf("%d",*(p++)); 输出2
printf("%d",*(p--)); 输出3
第2个回答 2014-07-05
经测试输出结果不一样。你的问题就不对。
另外p++是先输出再加1,p--也是先输出再减1.
第3个回答 2014-07-05
你把++和--写p的前面
*(++p)
*(--p)
你这玩意和指针一点关系也没.....你前面学的不好啊~
自增和自减最好是写成单独的语句
你的那个p没用,用a就可以表示
为啥指针要区别类型?就是因为这p++这里是加1,但逻辑上有加sizeof(int)个数.如果double和int都用一个指针,那鬼知道这p++在逻辑上是加sizeof(int)个还是sizeof(double)个?
第4个回答 2014-07-05
不可能一样。printf("%d",*(p++));输出2,而printf("%d",*(p--));输出3。因为p=&a[1]=2,所以printf("%d",*(p++));输出*p=2;那个++在输出后执行,使p指向a[2]=3;接着printf("%d",*(p--))输出*p(注意这时p+1了,指向了3)=3;完成后才对p时行--操作又使它指向2。