单片机用C语言向SD写入指令中“((unsigned char *)&argument)[0]”是什么意思、怎么用?

2025-04-13 21:57:27
推荐回答(1个)
回答(1):

一层层的扒开来解释
1、&argument -- 取变量argument的地址
2、(unsigned char *)(&argument) -- 将这个地址强制类型转换为无符号字符型的指针
说明:类似于(unsigned char *)0x10010010,讲一个整型数强制类型转化成一个指针值,然后可以做绝对地址的访问。
3、(unsigned char *)(&argument)[0] -- 将这个指针用数组的方式访问
说明:有时我们可以这样来访问 (1) unsigned char *p p[0] 等于同*p p[1]等同于*(p+1)
(2)unsigned char a[5] *a 等同于a[0] *(a+1)等同于a[1]
最终完成的功能就是将32位的argument拆成4个8位的字符型数据,如果您觉得复杂你可以这样来写
SdWrite(unsigned char)(argument>>24));
SdWrite(unsigned char)(argument>>16));
SdWrite(unsigned char)(argument>>8 ));
SdWrite(unsigned char)(argument>>0 ));