注册 登录
编程论坛 新人交流区

[求助]关于取地址的问题

漫游者李李西 发布于 2007-11-15 21:09, 649 次点击

看一下这个程序:
#include <stdio.h>
#include <stdlib.h>

int main()
{
int a[10]={1,2,3,4,5,6,7,8,9,10};
int *p=a;
int i;


printf("%d",*(++p));


printf("%d",*p);
system("PAUSE");
return 0;
}
其中第一句printf语句中,写成*(++p)时,输出第二个元素,而写成*(p++)时,输出第一个元素呢?

5 回复
#2
mycrazy2007-11-15 21:44
当++在前时 表示先进行自加 然后运算
 ++在后时 表示先进行运算 然后自加
 比如

#include"stdio.h"

void main()
{ int p=1,q=1s,m;
s=(++p)+1;
m=(q++)+1;
printf("%d\t%d\n",s,m);
}
则s=3 而m=2.
#3
visualcitybo2007-11-15 23:19
顶上
#4
漫游者李李西2007-11-16 08:53
可是有括号啊,不是应该++在取地址吗?
#5
漫游者李李西2007-11-16 09:00
还有,*p++也是先取p的地址人后再自加,一级运算符不是从右向左算吗?
#6
lusan1682007-11-17 16:31
其中第一句printf语句中,写成*(++p)时,输出第二个元素,///此时是先自增,然后在输出
而写成*(p++)时,输出第一个元素呢?   ////先输出,然后在自增

1