开发平台(Platform): (Ex: Win10, Linux, ...)
单芯片开发 PIC18
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
CX8 compiler
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
None
问题(Question):
关于这段code指标的操作觉得不太正常, 想请教版友帮我确认观念
程式码(Code):(请善用置底文网页, 记得排版,禁止使用图档)
定义与宣告部分:
typdef struct{
int A;
char *data;
} MSG_OBJ
typedef struct{
int B;
char useData[8];
} MSG_OBJ_USE
char globalData[8] = {0};
void getDataFun(MSG_OBJ* b)
{
b->data = globalData;
}
MSG_OBJ_USE obj;
以上是定义与宣告, 接下来呼叫时传入obj (特别处为obj之type是MSG_OBJ_USE)
getDataFun(&obj);
之后这段code执行
//Step.1
char* ptr = (char*)(*(uint16_t*)obj.useData); //平台指标为16 bits
//Step.2
for(int i=0;i<8;i++);
{
obj.useData[i] = ptr[i];
}
//问题:
Step1.的动作意思是useData array上面放的值是指标, 所以才可以取值(*)给ptr
然后用step2把copy资料.
我的疑问是b->data = globalData应该是把&globalData[0] 指定给b->data而已.
谢谢回答!!
补充说明(Supplement):