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

简介: 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
目录
相关文章
|
弹性计算 JavaScript 算法
常见类型-3:数组元组的方法
本实验将介绍TypeScriptvs数组元组的方法
数组与集合的转换
数组与集合的转换
61 0
|
7月前
|
存储 Scala
创建集合和数组
创建集合和数组
52 0
从数组对象格式的数组中删除指定对象
从数组对象格式的数组中删除指定对象
38 0
类数组如何转换为数组
类数组如何转换为数组
85 0
C语言函数可以修改数组的值吗
C语言函数可以修改数组的值吗
|
C语言 C++
【C 语言】指针数据类型 ( 不允许向 NULL 地址写入数据 | 不允许不断地改变指针指向 | 字面量存放位置 )
【C 语言】指针数据类型 ( 不允许向 NULL 地址写入数据 | 不允许不断地改变指针指向 | 字面量存放位置 )
230 0
【C 语言】指针数据类型 ( 不允许向 NULL 地址写入数据 | 不允许不断地改变指针指向 | 字面量存放位置 )
|
存储 编译器 C语言
【C 语言】数据类型本质 ( 数据类型 | 数据类型本质 | 数组地址 | 数组首元素地址 )
【C 语言】数据类型本质 ( 数据类型 | 数据类型本质 | 数组地址 | 数组首元素地址 )
167 0
【C 语言】数据类型本质 ( 数据类型 | 数据类型本质 | 数组地址 | 数组首元素地址 )
|
C语言
【C 语言】数组 ( 数组相关地址 | 数组首元素地址 | 数组地址 )
【C 语言】数组 ( 数组相关地址 | 数组首元素地址 | 数组地址 )
231 0
【C 语言】数组 ( 数组相关地址 | 数组首元素地址 | 数组地址 )