指针妙用之将函数中形参的值传递给实参
【摘要】 说明指针,是C语言中的一个重要概念及其特点,也是掌握C语言比较困难的部分。指针也就是内存地址,指针变量是用来存放内存地址的变量,在同一CPU构架下,不同类型的指针变量所占用的存储单元长度是相同的,而存放数据的变量因数据的类型不同,所占用的存储空间长度也不同。有了指针以后,不仅可以对数据本身,也可以对存储数据的变量地址进行操作。 来自 指针的百度百科 baike.baidu.com/item/...
代码说明
指针,是C语言中的一个重要概念及其特点,也是掌握C语言比较困难的部分。指针也就是内存地址,指针变量是用来存放内存地址的变量,在同一CPU构架下,不同类型的指针变量所占用的存储单元长度是相同的,而存放数据的变量因数据的类型不同,所占用的存储空间长度也不同。有了指针以后,不仅可以对数据本身,也可以对存储数据的变量地址进行操作。 解释来自 指针的百度百科 baike.baidu.com/item/%E6%8C…
技术背景
在编写串口解析协议中,需要对多个数据进行解析。为了实现复用性。实现同一个功能的多次调用,采用指针对参数进行传递。
因为不止一个参数,不能用return的方式返回。同时,若用全局变量的方式,则只能用于传递同一组参数。若采用指针传递方式,则可实现传递两个参数,并具有通用性。 所以使用指针传递的方式,实现返回多个变量。这是在简单的c语言编程使用的一种技巧。
代码及注释如下:
void Get_Value_2(unsigned int*data0,unsigned int *data1)
{ //buf中数据长度
unsignedshort buf_len = 0;
//buf数据中值的位数
unsignedshort buf_data_len = 0;
unsignedshort buf_data_len_0 = 0;
unsignedshort buf_data_len_1 = 0;
unsignedchar i = 0;
buf_len= Version_buf[2];
buf_len<<= 8;
buf_len|= Version_buf[1];
buf_data_len= buf_len - 1 - 5;
buf_data_len_0= 0;
for(i= 0;i< buf_data_len;i++)
{
if(Version_buf[8+i]!= 0x2C)
buf_data_len_0++;
else
break;
}
//总的长度减去逗号1个字符
buf_data_len_1= buf_data_len - buf_data_len_0 - 1;
*data0= 0;
for(i= 0;i< buf_data_len_0;i++)
{
*data0+= (Version_buf[8+i]-0x30)*pow(10,buf_data_len_0 - 1 -i);
}
*data1= 0;
for(i= 0;i< buf_data_len_1;i++)
{
*data1+= (Version_buf[8+buf_data_len_0+1+i]-0x30)*pow(10,buf_data_len_1 - 1 -i);
}
复制代码
}
代码中的data就是用于传递的指针。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)