一个极简单的菜鸟问题

realyzeal 2001-08-28 02:21:06
数组和结构是不是都是连续存放在缓冲里的,
char buff[200];
prog *myprog = new prog;//prog 是一个已经定义过的结构
myprog = (prog *)buff;
这样子是不是就可以通过结构来访问buff里面的东西了?
...全文
61 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
xzou 2001-08-28
  • 打赏
  • 举报
回复
注意这句话,myprog = (prog *)buff;
这本身就是一个地址的调用,我可以用结构赋值,取值,只是对这里面内存的操作,这样不就是
用结构来访问buff里面的东西,访问的知识地址里的东西而已。
socket包通常都是这样使用的,但是你硬要说我以结构赋值,却要知道buff[n]是什么,可能确实要计算(这个跟编译字符对齐参数有关),不过仅仅是使用这个内存分区应该没什么问题吧
cococut 2001-08-28
  • 打赏
  • 举报
回复
不可以,结构的情况下是以顺序有关,比如结构
typedef struct{
BYTE byte1;
DWORD word2;
BYTE byte2;
}tempstruct;
它的大小我们看表面只有6个字节,可是用sizeof(tempstruct)的时候,结构是12个字节,
说明结构与一般的数组的方式并不一样
xzou 2001-08-28
  • 打赏
  • 举报
回复
可以的,就是读指定内存数据,结构在内存中是连续的
fsb_12345 2001-08-28
  • 打赏
  • 举报
回复
不可以,数组和结构的存放方式不一样

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧