news 2026/9/28 15:32:57

小白学C指针 *

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
小白学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;// 二级指针(指向指针的指针)

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/26 20:57:45

Kafka入门:从零开始掌握消息队列

前言在当今的分布式系统架构中&#xff0c;消息队列已经成为不可或缺的核心组件。Apache Kafka作为一款高吞吐量、低延迟的分布式消息系统&#xff0c;被广泛应用于大数据处理、日志收集、流式处理等场景。一、Kafka是什么&#xff1f;Apache Kafka是一个分布式流处理平台&…

作者头像 李华
网站建设 2026/9/27 23:17:09

基于响应面法粒子群算法的切削参数多目标优化附matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。 &#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室 &#x1f447; 关注我领取海量matlab电子书和数学建模资料 &#x1…

作者头像 李华
网站建设 2026/9/27 18:31:30

色度采样相同(4:2:2)Level A与Level B怎么选?

在色度采样相同&#xff08;都是4:2:2&#xff09;的前提下&#xff0c;Level A 和 Level B 的清晰度在理论上是完全相同的&#xff0c;但Level B提供了更高的时基稳定性和可靠性。一、下面以1080P50为例参数1080P50 Level A (4:2:2)1080P50 Level B (4:2:2)分辨率192010801920…

作者头像 李华
网站建设 2026/9/27 8:54:14

【课程设计/毕业设计】基于python-CNN深度学习对胡萝卜是否新鲜识别基于python-CNN深度学习对胡萝卜是否新鲜识别

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/9/26 17:37:16

复旦突破:AI智能体实现工程化版本升级能力

这项由复旦大学领导的研究于2026年1月发表在arXiv预印本平台&#xff0c;论文编号为arXiv:2601.04620v1 [cs.AI]。有兴趣深入了解的读者可以通过该编号查询完整论文内容。当你的手机应用出现问题时&#xff0c;开发者不会让应用"自我反思"来解决bug&#xff0c;而是会…

作者头像 李华