news 2026/7/6 2:32:54

【嵌入式C语言】07.二级指针+函数

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【嵌入式C语言】07.二级指针+函数

一、二级指针

1.概念

概念:二级指针也是个指针,该指针用来存放另外一个一级指针在内存中的地址(指向指针的指针)

二级指针解引用一次,变成一级指针

2.定义二级指针

int a=88;

int *p=&a;

int **q=&p;

3.使用二级指针

*q --》二级指针解引用一次,结果是*&p--》p

**q --》二级指针解引用两次,结果是**&p--》*p--》a

二、函数的基本概念

1.概念

函数是用来处理问题的一段代码,我们把代码封装起来变成了函数,函数提高了代码的复用性

2.定义函数

返回值类型 函数名字(形参列表)

{

函数的具体代码

}

写法一: 把函数的声明和定义都写在主函数的前面

写法二: 函数的声明放在主函数的前面,函数的定义放在主函数的后面

写法三: 函数的声明放在主函数的前面,函数的定义放在单独的.c文件中

3.函数的使用(调用)

语法规则:函数名字(实参);

4.函数调用的过程分析

总结:函数调用的时候自动入栈,函数执行完毕,自动出栈

5.实参和形参之间的关系

1.我关于传值和传递值的理解

(1)实参和形参拥有各自独立的地址空间

(2)实参赋值给形参有两种

传值:实参把自己的值拷贝一份给形参

传地址:实参把自己的地址赋值给形参

(3)实参和形参同名,可以同名,但是毫无关系,各自独立

6.全局变量和局部变量

6.1 概念

全局变量:在所有函数的外面定义的变量就是全局变量,全局变量整个.c文件以及其他.c文件都可以使用(全局变量的作用域是文件作用域)。任意一个函数修改全局变量,整个程序里后续所有函数使用的都是修改后的值

局部变量:在函数花括号内部定义的变量都是局部变量

局部变量只能在定义它的那个函数内部使用,其它地方不可以使用(局部变量的作用域是局部作用域)

专业术语:作用域(变量的作用范围)

6.2 全局变量跟局部变量同名

局部变量跟全局变量同名,此时局部变量会隐藏全局变量,导致全局变量无法使用

6.3 初始化

全局变量没有初始化,默认都是0

局部变量没有初始化,默认是随机数

7.函数的返回值和形参

返回值只有如下三种情况

第一种:没有返回值 void

第二种:返回普通变量类型

第三种:返回指针,一定不可以返回局部变量的地址

原因:局部变量的作用域只是在定义它的函数中生效,当函数退出的时候,该局部变量(栈空间)的地址空间会被自动释放

如果是返回局部变量的值,是没有问题的(编译器会把局部变量的值备份一份到寄存器中),返回的就是寄存器里面的那个备份值

形参只有三种情况

第一种:没有形参 int fun(){ }

第二种:有形参,普通变量--》实参传值给形参

第三种:有形参,指针--》实参传地址给形参

8.数组作为函数的形参

8.1 一维数组作为函数的形参

int a[10]={56,89,10};

int fun(int buf[10]) //写法一

int fun(int *p) //写法二

8.2 二维数组作为函数的形参

int a[3][4]={56,89,10};

int fun(int buf[3][4]);

int fun(int *p,int n1,int n2);

8.3 任何数组作为函数的形参,求大小

任何数组作为函数的形参,sizeof()求大小都是当成指针来求大小

数组作为函数的形参时会退化为指针

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

ssm265基于vue的搬家预约系统+vue(文档+源码)_kaic

第5章 系统实现5.1 管理员模块 5.1.1 用户管理 管理员可以对用户进行添加修改删除查询操作。图5-1用户管理界面 5.1.2 司机管理 管理员可以对司机进行添加修改删除查询操作。图5-2司机管理界面 5.1.3 搬家人员管理 管理员可以对搬家人员进行添加修改删除查询操作。图5-3搬家人员…

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

AI开发平台趋势解析:从代码生成到流程自动化实战

🚀 30款热门AI模型一站整合,DeepSeek/GLM/Qwen 随心用,限时 5 折。 👉 点击领海量免费额度 这类榜单最值得看的不是排名,而是榜单背后反映的趋势和具体项目能解决什么实际问题。第27周GitHub涨星榜,14个…

作者头像 李华
网站建设 2026/7/6 2:31:57

MESI 协议状态机详解:从 4 种状态变迁到并发编程的 3 个关键启示

MESI 协议状态机详解:从 4 种状态变迁到并发编程的 3 个关键启示现代计算机系统中,CPU 缓存一致性协议是确保多核处理器正确运行的核心机制之一。MESI(Modified, Exclusive, Shared, Invalid)作为最广泛应用的缓存一致性协议&…

作者头像 李华
网站建设 2026/7/6 2:31:48

Faster R-CNN ResNet50 vs VGG16 对比:Pytorch 下 3 项关键指标实测分析

Faster R-CNN ResNet50 vs VGG16 对比:Pytorch 下 3 项关键指标实测分析在目标检测领域,Faster R-CNN 作为经典的两阶段算法,其性能表现与主干网络的选择密切相关。本文将通过实测数据对比 ResNet50 和 VGG16 作为主干网络时的训练速度、推理…

作者头像 李华
网站建设 2026/7/6 2:30:08

163MusicLyrics:免费高效的跨平台音乐歌词批量获取神器

163MusicLyrics:免费高效的跨平台音乐歌词批量获取神器 【免费下载链接】163MusicLyrics 云音乐歌词获取处理工具【网易云、QQ音乐】 项目地址: https://gitcode.com/GitHub_Trending/16/163MusicLyrics 还在为本地音乐库缺少歌词而烦恼吗?163Mus…

作者头像 李华