鱼C论坛

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

[已解决]指针

[复制链接]
发表于 2020-9-24 20:43:55 | 显示全部楼层    本楼为最佳答案   
前面的回复,若有对你的理解造成了误解之处,请原谅! 我也不想去编辑修改前面的回复了,下午我写了一个小程序,并对其进行了探索试验,并对程序进行了注释,希望能达到你的要求。程序中由于 p 与 *p 的反复运算,若不每条都加上一个 p = a; 语句,输出的结果有可能会造成累加的效果。程序如下:

  1. #include <stdio.h>

  2. int main()
  3. {
  4.     int*p,a[5]={11,22,33,44,55};

  5.     p = a;
  6.     printf("%d\n",p);             // 第1个元素的地址
  7.     printf("%d\t",*p);            // 取得第1个元素的值,输出11
  8.     p = a;
  9.     printf("%d\t",*p++);       // 先取得第1个元素的值,地址再自增1,输出11
  10.     p = a;
  11.     printf("%d\n",*(p++));    // 先取得第1个元素的值,地址再自增1,输出11

  12.     p = a;
  13.     printf("%d\t",*(p+1));     // 先取p指向元素的地址,地址加1,再取其值,输出22
  14.     p = a;
  15.     printf("%d\n",*(++p));    // 先取p指向元素的地址,地址加1,再取其值,输出22
  16.    
  17.     p = a;                              // 若不加此语句,*p 值就是上一行的结果,加上此语句,*p 值就是第 1个元素的结果
  18.     printf("%d\t",*p+1);       // 先取*p的值,使其值加1,输出12
  19.     printf("%d\n",*p+=1);    // 先取*p的值,使其值加1,输出12
  20.     printf("%d\n",++*p);      // 先取*p的值,使其值加1,输出13

  21. }
复制代码

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-7 23:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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