前面的回复,若有对你的理解造成了误解之处,请原谅! 我也不想去编辑修改前面的回复了,下午我写了一个小程序,并对其进行了探索试验,并对程序进行了注释,希望能达到你的要求。程序中由于 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
}
|