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
目录
相关文章
|
2月前
|
存储 安全 Java
防止数组元素的指针被修改
防止数组元素的指针被修改
15 1
|
8月前
|
存储 机器学习/深度学习 Java
Java数组的定义和使用(一篇带你搞定数组)
Java数组的定义和使用(一篇带你搞定数组)
195 0
|
5月前
|
存储 Java 索引
【Java数组】数组定义 | 初始化赋值 | 数组练习题
【Java数组】数组定义 | 初始化赋值 | 数组练习题
|
5月前
|
BI
多维数组元素的指针访问方式
以二维数组为例介绍多维数组的指针访问方式。
27 0
|
10月前
|
存储 机器学习/深度学习 Java
【JavsSE】数组的定义与使用
【JavsSE】数组的定义与使用
|
Python
Python关键字个数可变的位置传参与个数可变的关键字传参
Python关键字个数可变的位置传参与个数可变的关键字传参
58 0
C中取得数组的地址,赋值给数组结构的字段
C中取得数组的地址,赋值给数组结构的字段
65 0
C中常量数组不能修改
C中常量数组不能修改
60 0
C语言函数可以修改数组的值吗
C语言函数可以修改数组的值吗
|
Java
Java数组元素的默认初始化值
Java数组元素的默认初始化值
86 0