鱼C论坛

 找回密码
 立即注册
12
返回列表 发新帖
楼主: 雨天Zz

[已解决]指针

[复制链接]
发表于 2020-9-24 20:43:55 | 显示全部楼层    本楼为最佳答案   
前面的回复,若有对你的理解造成了误解之处,请原谅! 我也不想去编辑修改前面的回复了,下午我写了一个小程序,并对其进行了探索试验,并对程序进行了注释,希望能达到你的要求。程序中由于 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

}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-13 06:01

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表