盛夏的果实 发表于 2021-8-6 16:48:37

C中取得数组的地址,赋值给数组结构的字段

比如,吾开辟了一个共享内存区,把数组转移成如下结构:
typedef struct
{
    int shmID;
    bool hasData;
    int dataSize;
    char* dataBuffer;
}JsData;
有两种办法:

[*]计算位置
JsData* pData = (JsData*)m_nShmAddr;
pData->dataBuffer = (char*)m_nShmAddr+sizeof(int)+sizeof(bool)+sizeof(int);

[*]直接取地址(会错误)
pData->dataBuffer = (char*)(&(pData->dataBuffer));这个代码的意思是,取dataBuffer的地址,同仁给dataBuffer。
两种办法是不是等效?不等效,因为有字节对齐的问题(pack)。输出结果如下:
0xA7E38009
0xA7E38010


文档来源:51CTO技术博客https://blog.51cto.com/u_13161667/3299477
页: [1]
查看完整版本: C中取得数组的地址,赋值给数组结构的字段