OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4321|回复: 2

这里为什么使用指针

[复制链接]

19

主题

36

帖子

0

精华

初级会员

Rank: 2

积分
178
金钱
178
注册时间
2015-7-26
在线时间
28 小时
发表于 2015-9-5 10:28:02 | 显示全部楼层 |阅读模式
5金钱
u8 TP_Read_XY2(u16 *x,u16 *y) 
{
 u16 x1,y1;
  u16 x2,y2;
  u8 flag;    
    flag=TP_Read_XY(&x1,&y1);   
    if(flag==0)return(0);
    flag=TP_Read_XY(&x2,&y2);   
    if(flag==0)return(0);   
    if(((x2<=x1&&x1<x2+ERR_RANGE)||(x1<=x2&&x2<x1+ERR_RANGE))//
    &&((y2<=y1&&y1<y2+ERR_RANGE)||(y1<=y2&&y2<y1+ERR_RANGE)))
    {
        *x=(x1+x2)/2;
        *y=(y1+y2)/2;
        return 1;
    }else return 0;  
}  
问题1:为什么用指针?
      2:X2是什么?是地址还是地址中的数据?

最佳答案

查看完整内容[请看2#楼]

1、使用指针快速返回数据 2、X2是读取到的数值,加上&符号就是取X2所在内存的地址,将读取到的数据放到X2所在的地址,也就是X2的值了
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

120

主题

7877

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12010
金钱
12010
注册时间
2013-9-10
在线时间
427 小时
发表于 2015-9-5 10:28:03 | 显示全部楼层
1、使用指针快速返回数据
2、X2是读取到的数值,加上&符号就是取X2所在内存的地址,将读取到的数据放到X2所在的地址,也就是X2的值了
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复

使用道具 举报

4

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
68
金钱
68
注册时间
2015-10-12
在线时间
3 小时
发表于 2015-10-13 16:22:23 | 显示全部楼层
这是个子程序,而子程序的局部变量是在栈内的,子程序使用完就会从栈区释放,而返回值只是标志flag;
那么怎么把执行完后的数据保存呢?主函数中传递地址给子函数,将结果写入该地址,由于该地址是主函数申请的,子函数结束后,栈区不会释放该参数,那么保存到该地址,便不会丢失。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 13:00

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表