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数组元组的方法
数组与集合的转换
数组与集合的转换
71 0
从数组对象格式的数组中删除指定对象
从数组对象格式的数组中删除指定对象
45 0
根据数组中对象的属性值进行排序
根据数组中对象的属性值进行排序
93 0
类数组如何转换为数组
类数组如何转换为数组
89 0
C中取得数组的地址,赋值给数组结构的字段
C中取得数组的地址,赋值给数组结构的字段
94 0
C中常量数组不能修改
C中常量数组不能修改
97 0
|
存储 编译器 C语言
【C 语言】数据类型本质 ( 数据类型 | 数据类型本质 | 数组地址 | 数组首元素地址 )
【C 语言】数据类型本质 ( 数据类型 | 数据类型本质 | 数组地址 | 数组首元素地址 )
175 0
【C 语言】数据类型本质 ( 数据类型 | 数据类型本质 | 数组地址 | 数组首元素地址 )
|
C语言 C++
【C 语言】指针数据类型 ( 不允许向 NULL 地址写入数据 | 不允许不断地改变指针指向 | 字面量存放位置 )
【C 语言】指针数据类型 ( 不允许向 NULL 地址写入数据 | 不允许不断地改变指针指向 | 字面量存放位置 )
237 0
【C 语言】指针数据类型 ( 不允许向 NULL 地址写入数据 | 不允许不断地改变指针指向 | 字面量存放位置 )
定义一个方法,功能是找出一个数组中第一个只重复出现2次的元素,没有则返回null。例如:数组元素为 [1,3,4,2,6,3,4,2,3],重复两次的元素为4和2,但是元素4排在2的前面,则结果返回
定义一个方法,功能是找出一个数组中第一个只重复出现2次的元素,没有则返回null。例如:数组元素为 [1,3,4,2,6,3,4,2,3],重复两次的元素为4和2,但是元素4排在2的前面,则结果返回
137 0

热门文章

最新文章