|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include <stdio.h>
int main()
{
int i,a[]={1,2,3,4,5,6,7,8,9};
int *p=a;
for (i=0;i<9;i++)
{
printf("a[%d] 的值是%d\n",i,*p++);
}
return 0;
}
这个程序中*p++是怎么运算的?
前面的回复,若有对你的理解造成了误解之处,请原谅! 我也不想去编辑修改前面的回复了,下午我写了一个小程序,并对其进行了探索试验,并对程序进行了注释,希望能达到你的要求。程序中由于 p 与 *p 的反复运算,若不每条都加上一个 p = a; 语句,输出的结果有可能会造成累加的效果。程序如下:
- #include <stdio.h>
- int main()
- {
- int*p,a[5]={11,22,33,44,55};
- p = a;
- printf("%d\n",p); // 第1个元素的地址
- printf("%d\t",*p); // 取得第1个元素的值,输出11
- p = a;
- printf("%d\t",*p++); // 先取得第1个元素的值,地址再自增1,输出11
- p = a;
- printf("%d\n",*(p++)); // 先取得第1个元素的值,地址再自增1,输出11
- p = a;
- printf("%d\t",*(p+1)); // 先取p指向元素的地址,地址加1,再取其值,输出22
- p = a;
- printf("%d\n",*(++p)); // 先取p指向元素的地址,地址加1,再取其值,输出22
-
- p = a; // 若不加此语句,*p 值就是上一行的结果,加上此语句,*p 值就是第 1个元素的结果
- printf("%d\t",*p+1); // 先取*p的值,使其值加1,输出12
- printf("%d\n",*p+=1); // 先取*p的值,使其值加1,输出12
- printf("%d\n",++*p); // 先取*p的值,使其值加1,输出13
- }
复制代码
|
|