当前位置: 首页 > news >正文

小白学C指针 *

1.&取地址符 - “在哪里?”

inta=10;// a 是个变量,值是 10&a// 这是 a 的地址(门牌号),比如 0x7ffeeb0b1234

比喻

  • a= 你家的电视机(值)
  • &a= 你家的地址(可以找到电视机的位置)

2.*星号 - “是什么?”

(1) 声明指针时:

int*p;// p 是一个指针,能指向 int 类型数据的地址

(2) 解引用时(取指针指向的值):

inta=10;int*p=&a;// p 保存了 a 的地址*p=20;// 找到 p 指向的位置,把那里的值改成 20// 现在 a 变成 20 了!

比喻

  • p= 一张写着地址的纸条
  • *p= 按照纸条地址去房子里拿东西(或放东西)

3.完整例子,一句话解释

#include<stdio.h>intmain(){inta=10;// 变量 a,值是 10int*p=&a;// p 保存了 a 的地址printf("a的值: %d\n",a);// 10printf("a的地址: %p\n",&a);// 地址1printf("p的值: %p\n",p);// 地址1(和上面一样)printf("*p的值: %d\n",*p);// 10*p=99;// 通过 p 找到 a,改成 99printf("现在a是: %d\n",a);// 99return0;}

4.一句话口诀

& 变量 → 地址(取地址) * 指针 → 值(解引用) 声明时:int *p → p是个指针 使用时:*p = 10 → 找到p指向的地方,放个10

日常类比

  • 你家:a
  • 你家地址:&a
  • 快递单(写着地址):p
  • 按快递单找到你家:*p

记住:&取地址*取内容。一个往“里”看,一个往“外”看。


那么有的时候int星号p int和星号之间有的时候有空格,有的时候空格在星号和p之间,这是什么意思?

没区别!纯粹是代码风格问题,编译器完全不在乎空格在哪里。

几种写法的意思完全相同

int*p;// 常见写法:强调 *p 是一个整数int*p;// C++风格:强调 p 是一个整型指针int*p;// 中间派int*p;// 紧凑派(不推荐)

但!有个陷阱要特别注意:

// 错误理解:两个变量都是指针?int*p1,p2;// 其实只有 p1 是指针,p2 是普通整数!// 正确写法(想要两个指针):int*p1,*p2;// 两个都是指针// 更好的写法(避免混淆):int*p1;int*p2;// 分开写,清晰

为什么有不同风格?

  1. int *p(C程序员常用):
int*p;*p=10;// 一致:都是 *p
  • 想法:*p这个整体是int类型
  • 更适合理解:*p = 10(解引用得到整数)
  1. int* p(C++程序员常用):
int*p;p=&a;// p 本身是指针类型
  • 想法:p的类型是int*(整型指针)
  • 更适合理解:int*是一种类型

给你的建议

  • 初学者用int *p(更符合C传统)
  • 每行只声明一个指针变量,避免混淆
  • 保持团队代码风格一致

重要区别不在空格,在变量名前面的星号个数

int*p;// 一级指针int**pp;// 二级指针(指向指针的指针)

记住:编译器只看星号*在不在,不看空格在哪里。空格只是让人读起来舒服些。

http://www.jsqmd.com/news/235281/

相关文章:

  • 计算机深度学习毕设实战-基于python-CNN卷积神经网络对海洋壳类生物识别
  • 2024年AI原生应用在事实核查领域的最新研究进展
  • 【小程序】订单数据缓存 以及针对海量库存数据的 懒加载+数据分片 的具体实现方式
  • FHIR 中 _summary 参数
  • 救命神器2026专科生必看!8个AI论文网站深度测评与推荐
  • AI自动化编排:从入门到精通(基于Dify构建AI智能系统)
  • 【课程设计/毕业设计】基于机器学习python-CNN深度学习对宠物体型识别
  • Nuxt3全栈开发实战指南
  • 【毕业设计】深度学习基于python-CNN深度学习对宠物体型识别
  • 为什么AI算法工程师年薪能破百万?大厂高薪岗位学习指南与实战经验分享_月薪35-50k 16薪
  • 不用卡尺怎么测量复杂零件尺寸?告别卡尺,精准高效:SIMSCAN-E手持扫描仪在复杂零件检测中的革命性应用
  • 大数据领域数据服务在教育行业的创新应用
  • 【课程设计/毕业设计】通过python的对狗的体型识别通过python-CNN深度学习对狗的体型识别
  • 动态机器码
  • 动态机器码
  • 上海AI实验室突破:视觉提示技术实现机器人多角度感知
  • Edge Remove
  • 【毕业设计】通过python-CNN深度学习对狗的体型识别通过python-CNN深度学习对狗的体型识别
  • 深度学习毕设项目:通过python-CNN深度学习对狗的体型识别
  • 计算机深度学习毕设实战-通过python-CNN机器学习对狗的体型识别通过python-CNN深度学习对狗的体型识别
  • 深度学习毕设选题推荐:通过python深度学习对狗的体型识别
  • 单机防护机器码 仿网吧
  • 基于SpringAI的在线考试系统-企业级软件研发工程应用规范实现细节(完整)
  • Flink与CockroachDB集成:分布式SQL数据库
  • 机器码机器码
  • AI编辑器
  • 【设计模式】外观模式(Facade)详解
  • 大语言模型在城市规划决策支持中的推理应用
  • 内存碎片|c++内存池|lua gc
  • 喂金鱼小工具