常见的一级指针参数
先来看一个最常用函数模型,函数func()参数为一个uint8_t 的指针类型,那这个函数有什么作用?
uint8_t data1[3];
void func(uint8_t *p)
{
p[0]=0x01;
p[2]=0x02;
}
void main()
{
uint8_t *p1=data1;
func(data1);
}
- 在main函数中先定义了一个指针p1,然后把p1指向了一个数组data1。
- 把p1作为参数传递进函数func()
- 结果也很容易猜到,就是data1中的值在func运行时被改变了,分别等于0x01,0x02
那我们就不难理解,指针作为参数传递进去,而函数内部就可以修改这个指针所指向的数据。如下图所示:
而这个就是一级指针,简单的可以看函数定义的参数带一个 “*” 号就是一级指针。p1就是一个一级指针传递进去,而传递进去以后就可以修改这个一级指针所指向的地址的数据,也就是data1。
假如我想修改p1所指向的地址,该怎么办?
如下如所示,现在我想让p1不再指向data1,而是指向data2
这个很明显用上面的一级指针作为参数已经实现不了,它只能修改p1所指向的地址的数据,而现在是要修改p1本身让他指向data2。有的小伙伴可能已经能猜到,p1指向data1我们可以修改data1,那再用一个指针指向p1不就是可以修改p1了。
那这里我们就可以定义一个指针的指针pp1,让他指向p1,这样把pp1传入到函数中,函数内部就可以修改p1的值了。
代码如下:
uint8_t data1[3];
uint8_t data2[3];
void func2(uint8_t **pp)
{
*p=data2;
}
void main()
{
uint8_t *p1=data1;
uint8_t *pp1=&p1;
func(pp1);
}
89101112
这里传入的pp1就是一个二级指针,而func2的参数也是带两个星号。
那二级指针也就不难理解了,他可以修改指向的指针,也就是修改pp1指向的指针p1的值,让p1可以指向另外一块内存。
那实际上一般在使用的时候可能大部分都会省略掉这个pp1而使用更简便的写法:
void main()
{
uint8_t *p1=data1;
func(&p1);
}
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
参数
+关注
关注
11文章
1167浏览量
30957 -
函数
+关注
关注
3文章
3332浏览量
60700 -
指针
+关注
关注
1文章
434浏览量
70295 -
main
+关注
关注
0文章
35浏览量
5867
发布评论请先 登录
相关推荐
iMatrix平台中如何使用一级菜单
一级菜单(menu:firstMenu)1.1说明参数说明: showNum:可选。一级菜单显示的数目。链接的url在【系统构建平台】à【菜单管理】中修改或添加。 1.2使用例子,其页面显示如图:
发表于 05-29 10:43
基于变速积分的PID一级倒立摆研究
一级倒立摆的数学模型,阐述了变速积分的PID优点,对一级倒立摆的变速积分的PID控制进行仿真,对比传统PID控制有明显的性能改进。
发表于 02-03 17:14
•73次下载
Mybatis缓存之一级缓存
一级缓存,一级缓存是SqlSession级别的缓存。mybatis提供查询缓存,用于减轻数据压力,提高数据库性能。mybaits提供一级缓存,和二级缓存。一级缓存
发表于 11-27 20:44
•965次阅读
消防工程师的一级和二级有哪些区别
有不少考生对于一消、二消有一些困惑:不明白一级消防工程师和二级消防工程师到底有什么区别或者可以先考二级再考一级吗等等。今天为大家详细解说下一消和二消的不同,看完你就懂了。
C语言二级指针的用法与原理
指针,我们都知道指针是用来存储一个变量的地址。所以,当我们定义了一个指向指针的指针的时候(pointer to pointer),我们也称之为二级指针,那针对于这个二级指针来说,第
发表于 07-02 14:52
•2966次阅读
一级/二级/三级配电箱的作用及用途
一级、二、三级箱是啥意思?这是相对而言的问题。我们做个假设:有一个新建的小区引进一条10kV进线,建了一个配电室,从变压器低压端出线0.4kV到配电柜(一级配电柜),再引出线到每栋楼的配电箱(二级配电箱),再出线到每个单元楼的配电柜(三
发表于 02-11 09:47
•1884次阅读
配电箱的一级、二级保护措施有哪些
一级保护通常指对电路和设备进行基本的短路保护和过载保护,以确保电路和设备的正常运行。一般采用断路器、熔断器、载流开关等设备来实现,具有快速短路保护和过载保护功能,以防止电路和设备烧毁或发生其他严重事故。常见的一级保护措施如下:
发表于 04-04 18:02
•2462次阅读
配电箱的一级、二级、三级箱的区别和划分
一级、二级、三级箱是根据电压级别进行划分的。在国家的《建筑电气设计规范》中,将配电箱的一级、二级、三级箱进行了如下的规定:
发表于 04-04 18:11
•2.1w次阅读
评论