OpenEdv-开源电子网

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

这个((float*)a[i]是啥意思

[复制链接]

30

主题

53

帖子

0

精华

初级会员

Rank: 2

积分
185
金钱
185
注册时间
2020-5-21
在线时间
58 小时
发表于 2021-2-5 11:28:14 | 显示全部楼层 |阅读模式
1金钱
看到 一段demo代码是这样的。
float *a[2];
  ((ai_float *)a)[0] = -0.75;
  ((ai_float *)a)[1] = 0.25;


看不懂 这个赋值语句是啥意思。
直接这样赋值 和 上面的赋值有区别吗?谢谢
        *a[0]= -0.75;
        *a[1] = 0.25;




正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

30

主题

53

帖子

0

精华

初级会员

Rank: 2

积分
185
金钱
185
注册时间
2020-5-21
在线时间
58 小时
 楼主| 发表于 2021-2-5 11:35:45 | 显示全部楼层
如果定义二维的,float *a[2][2];   ((ai_float *)a)[0][1] = -0.75;  但是 keil 提示error:  #142: expression must have pointer-to-object type
回复

使用道具 举报

3

主题

821

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3329
金钱
3329
注册时间
2011-11-10
在线时间
207 小时
发表于 2021-2-5 15:15:13 | 显示全部楼层
float *a[2];是定义一个浮点型的指针数组,有三个元素,都是浮点型指针。
至于ai_float *,是自己定义的一种替换型,你需要跟踪查看。
回复

使用道具 举报

22

主题

2251

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4471
金钱
4471
注册时间
2013-4-22
在线时间
335 小时
发表于 2021-2-9 09:20:13 | 显示全部楼层
就是指针数据的定义,你可以研究下指针数组和数组指针
回复

使用道具 举报

3

主题

1906

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4100
金钱
4100
注册时间
2018-8-14
在线时间
695 小时
发表于 2021-2-9 10:19:03 | 显示全部楼层
ai_float 这个定义是什么?
回复

使用道具 举报

30

主题

53

帖子

0

精华

初级会员

Rank: 2

积分
185
金钱
185
注册时间
2020-5-21
在线时间
58 小时
 楼主| 发表于 2021-2-9 11:19:06 | 显示全部楼层
ai_float 是 cubemx.ai 定义的类型,其实就是float
回复

使用道具 举报

3

主题

1906

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4100
金钱
4100
注册时间
2018-8-14
在线时间
695 小时
发表于 2021-2-9 19:00:53 | 显示全部楼层
wushili 发表于 2021-2-9 11:19
ai_float 是 cubemx.ai 定义的类型,其实就是float

如果ai_float == float
那么这种写法就是个错误, 或者叫误会更为合适。
他定义了两个float的指针, 但不是赋值两个float的地址, 而是赋值了两个float的值。
如果说, 后面的应用都一值用这种转换的方法, 是可以正常使用的, 因float是4字节, float的地址也是4字节, 所以我说它是个误会。
但如果你有一天想把float改为double那么这个误会就会立马变成错误了, 因为double是8字节。你可以试试
回复

使用道具 举报

30

主题

53

帖子

0

精华

初级会员

Rank: 2

积分
185
金钱
185
注册时间
2020-5-21
在线时间
58 小时
 楼主| 发表于 2021-2-11 10:32:05 | 显示全部楼层
哦,看下了系统代码,是这样定义的:

typedef float ai_float;

那  这样赋值应该是正确的吧,
      *a[0]= -0.75;
      *a[1] = 0.25;
回复

使用道具 举报

3

主题

1906

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4100
金钱
4100
注册时间
2018-8-14
在线时间
695 小时
发表于 2021-2-13 12:46:28 | 显示全部楼层
wushili 发表于 2021-2-11 10:32
哦,看下了系统代码,是这样定义的:

typedef float ai_float;

如果单凭你贴出来的代码而言, 这是错的, 因为指针是空指针, 没被赋值
你想想, a[0] & a[1] 放着啥?它俩指向哪儿?你赋值给它俩指向的地址能不错么?
回复

使用道具 举报

3

主题

44

帖子

0

精华

初级会员

Rank: 2

积分
135
金钱
135
注册时间
2018-8-5
在线时间
11 小时
发表于 2021-11-29 08:54:05 | 显示全部楼层
浮点型指针的数组
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-22 17:46

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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