搜索

stm32 a=(u8*)(&array); 这句话有问题吗

发布网友 发布时间:2025-01-15 03:16

我来回答

4个回答

热心网友 时间:2025-01-15 04:15

a = (u8 *)(&array);如果array数组是在RAM中的,那么这句话语法上是没有错误,但如果是在array数据是在Flash中,那么这句话就有问题了。
存在Flash中的数组是常量数据,你是怎么知道array数组是在Flash中的?是你定义了一个常量数组const u8 array[];?还是定义了一个指向Flash空间的指针array?这点必须要明确了。
你的问题涉及对常量的操作,姑且我就认为你这么定义了一个数组const u8 array[10];
那么LCD128_PhotoDis((u8*)array);你这么写是没有问题的,至少编译会通过,但是有个前提是在LCD128_PhotoDis(u8 *bmp)函数中只能读bmp地址空间的数据,一定不能有写操作,否则程序将发生不可预知的错误。

LCD128_PhotoDis((u8*)array); 这里就已经取得array这个数组的空间地址了,(u8 *)这是强制类型转换,将array数组强制转化成u8类型的指针。

热心网友 时间:2025-01-15 04:20

建议把a定义成const u8 *

热心网友 时间:2025-01-15 04:20

那个array不用&,因为array是数组名,也是数组的其实地址

热心网友 时间:2025-01-15 04:20

没问题
声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com

热门图文

Top