风过无痕1989 发表于 2020-9-24 20:43:55

前面的回复,若有对你的理解造成了误解之处,请原谅! 我也不想去编辑修改前面的回复了,下午我写了一个小程序,并对其进行了探索试验,并对程序进行了注释,希望能达到你的要求。程序中由于 p 与 *p 的反复运算,若不每条都加上一个 p = a; 语句,输出的结果有可能会造成累加的效果。程序如下:

#include <stdio.h>

int main()
{
    int*p,a={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

}
页: 1 [2]
查看完整版本: 指针