给定
typedef struct {
uint32 dataAddress;
} rsp;
一组数据,例如。 {1, 2, 3 .... 10}
uint8 *msg = NULL;
我们将消息数组赋给数据地址
rsp->dataAddress = (uint32) msg;
我们如何打印?例如:
for (k=0; k < 10; k++) // message fixed at length 10
printf("Resultant message = %x", (uint8) rsp->dataAddress[k]);
最佳答案
如果要将dataAddress
解释为指向uint8
数组的指针,则需要强制转换。本质上,强制转换与您分配 dataAddress
时所做的相反。您已经进行的转换是从 uint8*
到 uint32
。因此,反向转换看起来像这样:
(uint8*)rsp->dataAddress
要访问您编写的数组的元素:
((uint8*)rsp->dataAddress)[k]
我确实想知道为什么您选择将 dataAddress
声明为 uint32
类型。在我看来,将其声明为 uint8*
会更明智,从而避免所有强制转换。
关于c - 传递给结构地址后获取数组内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21296684/