一个结构体传递方式的问题
来源:互联网 发布:php对接api 编辑:程序博客网 时间:2024/05/17 05:56
结构体做函数参数有两种传递方式:
一是传递结构体变量,这是值传递;
二是传递结构体指针,这是地址传递。
struct key_number{ uint8 last; uint8 current;};struct key_number keynum;
前几天犯了一个失误,在传递结构体变量时使用值传递,由于在函数中修改的是局部变量,导致函数外的全局变量没被修改到。如下:
void keyscanf(struct key_number str){ os_timer_disarm(&key_timer); bool keysta = GPIO_INPUT_GET(keyionum); str.last = str.current; if(!keysta){ (str.current)++; if(6 < (str.current)){ str.current = 0; } } os_timer_arm(&key_timer, 350, 1);}
查出问题点后,改为传递结构体指针,将问题解决:
void keyscanf(struct key_number *p){ os_timer_disarm(&key_timer); bool keysta = GPIO_INPUT_GET(keyionum); p->last = p->current; if(!keysta){ (p->current)++; if(6 < (p->current)){ p->current = 0; } } os_timer_arm(&key_timer, 350, 1);}keyscanf(&keynum);
0 0
- 一个结构体传递方式的问题
- GET方式传递表单数据需要注意的一个问题
- [VB.NET].net结构体的传递问题,急!!!!!
- ICE如何传递一个结构体指针
- 一个关于结构体赋值的问题
- C#调用c++的dll,结构体数组作为引用参数的传递方式
- C语言中结构体的三种初始化方式以及结构体作为传参传递
- C语言中结构体对齐方式的问题
- 一个jsp传递参数的问题。
- 一个关于参数传递的问题
- 用session传递对象的一个问题。
- 一个经典的java传递问题
- 关于函数中传递地址值和结构体的一个小程序
- 结构体申请内存错误 传递了一个指针的拷贝
- 一个结构体初始化问题
- 使用Get方式传递中文参数的问题乱码问题
- 使用Get方式传递中文参数的问题乱码问题
- 使用Get方式传递中文参数的问题乱码问题!
- 简单socket()编程
- 连续更新了42天早报之后
- ESP8266 station模式下建立client、server TCP连接
- 关于C语言中内存的3个问题
- ESP8266 NON-OS SDK 和 RTOS SDK实现GPIO中断不同点
- 一个结构体传递方式的问题
- <C++全方位学习>endl与\n的区别
- 经典笔试题:用C写一个函数测试当前机器大小端模式
- HT7A6312—— 离线开关电源小功率初级转换开关IC 记录总结
- 【读书笔记】机器学习实战-2.2节
- 《一条狗的使命》观后感
- PHP 常量、PHP 变量全解析(超全局变量、变量的8种数据类型等)
- 外面的世界很精彩,然而等待你的人却可能已不在
- Go使用Text和HTML模板