news 2026/6/15 8:56:49

【C语言】(指针篇)指针的定义

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【C语言】(指针篇)指针的定义


喜欢这个文章可以给主页Mem0rin点一个关注互三,一起进步!

总算是学完了指针了,目前打算写三篇指针相关的博客,后面两篇讲指针的运算和遍历指针的传参

文章目录

    • 一、指针的定义
      • (一)指针的概念
      • (二)指针的类型
      • (三)指针的大小
    • 二、指针的赋值
        • 取地址操作符`&`:
    • 三、指针的使用
      • 解引用操作符`*`

一、指针的定义

(一)指针的概念

简单的来说,指针就是地址,记录着内存中元素的位置,指针的操作就是对地址的访问。打个比方来讲,我在公寓里找你家的门牌,指针的操作决定了我接下来的行为:开门,换一个门,到一个指定的门,或者对房间进行改装等。

(二)指针的类型

指针的使用往往和变量相绑定,不同的变量会有对应的指针变量。
比如:char类型的变量的指针就是char*int类型的变量的指针就是int*,结构体struct也有对应的指针,比如对于结构体struct s的指针是struct s*,甚至我们可以对char*求指针,得到二次指针char**
其实还有一种指针类型是void*,作用之后会讲到。

(三)指针的大小

指针变量通常和局部变量一起存储在栈区,本身不管是什么类型,统一占用4/8个字节,是4还是8由平台的位数决定。

二、指针的赋值

指针是存储地址的变量类型,那怎么存储呢。下面仅介绍最常规的方法:

取地址操作符&

&可以得到变量对应的最小地址,最小地址指的是变量在内存中占有的字节的最小地址。比如在以下的代码中:

#include<stdio.h>intmain(){inta=20;int*p=&a;printf("%p\n",p);return0;}>>>0x000000651379F734

此时打印出的地址是0x000000651379F734,如果我们通过内存窗口去看a此时的内存:

a占用的内存为

0x000000651379F734 0x000000651379F735 0x000000651379F736 0x000000651379F737

&a会选择其中的最小地址,也就是0x000000651379F734

三、指针的使用

有存储就会有调用,那么指针是怎么通过地址对变量产生影响的呢

解引用操作符*

有取地址操作符&,就有解引用操作符*,作用是&的逆序操作,也就是把地址还原成指向的变量。
在如下代码中:

#include<stdio.h>intmain(){inta=20;int*p=&a;printf("%p\n",p);printf("%d\n",*p);printf("%p\n",&*p);return0;}>>>000000F53A31FB1420000000F53A31FB14

p表示a的地址,为000000F53A31FB14
*p通过解引用,还原出了a,因此*p是整型变量,值为20,
&*p可以理解成&*相互抵消,也可以理解成&*p还原的a再取一遍地址,因此还是000000F53A31FB14

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

Linly-Talker语音识别模块(ASR)精准度实测分析

Linly-Talker语音识别模块&#xff08;ASR&#xff09;精准度实测分析 在数字人从实验室走向真实场景的今天&#xff0c;一个关键问题摆在开发者面前&#xff1a;用户说了一句话&#xff0c;系统真的“听懂”了吗&#xff1f;这看似简单的交互背后&#xff0c;藏着自动语音识别…

作者头像 李华
网站建设 2026/6/15 11:48:52

Linly-Talker适合中小企业吗?ROI成本收益分析

Linly-Talker适合中小企业吗&#xff1f;ROI成本收益分析 在客服电话永远占线、宣传视频制作周期动辄两周、新品发布还得请专业主播的今天&#xff0c;不少中小企业主都在问&#xff1a;我们能不能也用上“数字人”&#xff1f;不是那种需要百万预算和动捕棚的影视级虚拟偶像&a…

作者头像 李华
网站建设 2026/6/15 16:54:32

降低90%成本!Linly-Talker让企业轻松拥有AI虚拟客服

降低90%成本&#xff01;Linly-Talker让企业轻松拥有AI虚拟客服 在客服中心的深夜值班室里&#xff0c;一个声音温柔、表情自然的“员工”正不眠不休地解答用户问题——没有情绪波动&#xff0c;不会疲惫&#xff0c;还能随时切换成不同音色和形象。这不是科幻电影的场景&#…

作者头像 李华
网站建设 2026/6/15 14:17:50

【避坑指南】Maven依赖冲突怎么解决?用mvn dependency:tree一眼看清

在Java项目开发中&#xff0c;Maven的依赖管理极大简化了jar包的引入流程&#xff0c;但依赖冲突却是开发者绕不开的坑。当项目中同一类库存在多个版本时&#xff0c;轻则导致代码编译失败&#xff0c;重则引发运行时 NoClassDefFoundError 或 MethodNotFoundException 。本文将…

作者头像 李华
网站建设 2026/6/15 11:38:46

Linly-Talker边缘计算部署可行性研究:端侧推理优化方案

Linly-Talker边缘计算部署可行性研究&#xff1a;端侧推理优化方案 在虚拟主播24小时不间断直播、政务大厅数字员工实时响应咨询的今天&#xff0c;一个关键问题浮出水面&#xff1a;我们是否必须依赖云端服务器来驱动这些智能交互&#xff1f;答案正在悄然改变。随着边缘计算能…

作者头像 李华
网站建设 2026/6/15 17:17:25

【RAG安全】【ACL】The Good and The Bad: Exploring Privacy Issues in Retrieval-Augmented Generation (RAG)

ACL 2024 Findings Abstract 检索增强生成(RAG)是一种强大的技术,可将专有和私有数据引入语言模型,其中数据隐私是关键问题。尽管已有大量研究揭示了大语言模型(LLM)的隐私风险,但RAG技术可能重塑LLM生成的固有行为,带来目前尚未充分探索的新隐私问题。本文通过新颖的…

作者头像 李华