news 2026/7/21 22:45:17

C语言指针变量和函数调用的“超链接”属性

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C语言指针变量和函数调用的“超链接”属性

(1)指针变量和函数调用的“超链接”属性。

最近,我在看linux内核源码,里面使用到了大量的指针变量和函数调用。现在从类比的思想讨论一下指针变量和指向的真实变量,函数调用和函数定义它们之间的关系。

首先,所有的指针变量都占4个字节指向了可以是一个非常复杂的变量;函数调用就是一行代码,跳出去执行的函数可能有很多行代码,函数体内部能够实现很复杂的功能。从类比的思想看,两者有相似性,函数名其实就是函数代码段的起始地址,函数调用起始从深层角度看也可以看做一个函数指针去解引用访问函数。

那么,从类比角度看,我们比较熟悉的什么实物有这样的特性呢?

答:我能想到的就是“超链接”,超链接的物体可能是一段字符、一个图标等非常简单的实物,当我们建立超链接后,打开超链接后可能是另外一个非常负责的实物,例如一整个网页。

刚开始的需要创建超链接的实物对应的就是定义一个指针变量,此时这个指针变量处于注销状态;

创建超链接,对应的就是给指针变量写入有效数值,给唯一固定下来,这个指针变量处于了激活状态;

通过超链接去访问其他复杂实物,对应的就是通过指针变量去读写访问指向变量或者变量内部的成员,指针变量处于“运行态”。

因为函数名本身对应的地址就是唯一的,所以函数访问的过程只有第一、三两步,函数名是只读的,不能写操作。

(2)从“注销态”、“激活态”、“运行态”三种状态考虑变量、函数的状态。

《1》定义一个函数或者一个普通变量、一个指针变量,这个时候三者相当于处于“注销态”。

《2》给“普通变量”或者“指针变量”写入有效数值,这个时候两者处于“激活态”。

《3》对“普通变量”进行读访问、或者指针变量去读写访问指向的真正变量,或者函数调用,这个时候三者处于“运行态”。

(3)既然寄存器是硬件操作那个的接口,我们只需要操作那个寄存器就可以实现功能了,为什么还要定义一些全局变量、堆变量、临时栈变量呢?

因为寄存器的种类、数量、功能都是不变的,操纵这些寄存器的函数其实就是驱动程序,一个完整的程序是由2部分组成的(简单分类)应用程序和驱动程序,驱动程序只需要操纵这些寄存器就可以了,但是应用程序与具体的业务需求有关,不是一成不变的,这就用到了内存,内存就是一个一个被编码的字节格子,我们将与应用程序相关联的事物抽象成具有特定类型的变量(或者用各种类型去描述事物,有自定义类型例如结构体、数组、枚举等,也有原生类型)并暂时存储在内存中,应用程序其实就是要操纵这些应用变量。应用程序去调用驱动程序来操纵硬件外设工作。驱动程序就是将寄存器的位操作封装打包成能够被应用程序访问对接的程序,驱动程序既有纯硬件操作寄存器的特性,又有一部分应用程序的简单特点,因为它提供了参数列表和返回值,能够为应用程序提供简单服务。

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

革新性微信防撤回工具:全方位消息保护解决方案

革新性微信防撤回工具:全方位消息保护解决方案 【免费下载链接】WeChatIntercept 微信防撤回插件,一键安装,仅MAC可用,支持v3.7.0微信 项目地址: https://gitcode.com/gh_mirrors/we/WeChatIntercept 痛点解析 在日常微信…

作者头像 李华
网站建设 2026/7/16 6:12:33

小说下载工具:让阅读突破时空限制的全能解决方案

小说下载工具:让阅读突破时空限制的全能解决方案 【免费下载链接】Tomato-Novel-Downloader 番茄小说下载器不精简版 项目地址: https://gitcode.com/gh_mirrors/to/Tomato-Novel-Downloader 在数字阅读时代,如何随时随地获取喜爱的小说内容&…

作者头像 李华
网站建设 2026/7/16 4:30:07

魔兽争霸III现代化增强指南:提升游戏体验的全面解决方案

魔兽争霸III现代化增强指南:提升游戏体验的全面解决方案 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 引言 魔兽争霸III作为一款经典的…

作者头像 李华
网站建设 2026/7/21 5:16:31

Emotion2Vec+ Large支持哪些格式?MP3/WAV都能识别

Emotion2Vec Large支持哪些格式?MP3/WAV都能识别 你是不是也遇到过这样的问题:录了一段客户通话想分析情绪,结果上传后系统提示“不支持该格式”;或者手头只有手机录的M4A语音,却不确定能不能直接用?别急&…

作者头像 李华
网站建设 2026/7/21 6:34:17

Qwen3-0.6B实战笔记:从加载到输出完整流程

Qwen3-0.6B实战笔记:从加载到输出完整流程 1. 开场:为什么选Qwen3-0.6B做第一次实战 你刚拿到一个预装好的Qwen3-0.6B镜像,Jupyter已经跑起来了,但面对空白笔记本,心里可能有点发虚: “这模型到底怎么用&…

作者头像 李华
网站建设 2026/7/21 8:17:03

Joy-Con Toolkit 使用指南:从问题诊断到场景化应用

Joy-Con Toolkit 使用指南:从问题诊断到场景化应用 【免费下载链接】jc_toolkit Joy-Con Toolkit 项目地址: https://gitcode.com/gh_mirrors/jc/jc_toolkit 痛点诊断篇:你的手柄是否正面临这些挑战? 为什么在《塞尔达传说》中总是难…

作者头像 李华