c - 传递给结构地址后获取数组内容

标签 c arrays pointers struct

给定

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/

相关文章:

python - 将整数数组编码为唯一的 int

c++ - 分配 char 缓冲区以保存 float 的文本表示

android - 每次调用 JNI 方法时附加值

c - 指向c中变量的低字节地址

c - 如何检查指针是否指向数组中的元素?

python - ctypes:在 COM 服务器中返回指针时的内存管理

c - 预计在 elseif 之前

c++ - 大端和小端 float 有什么区别?

arrays - Kotlin vararg任意数组的数组

php - 根据特定键从多维数组中删除重复值