那位解释一下“.”操作符

arden1019 2005-12-13 04:03:37
看到这样的论述:

*p.f 表示p偏移f 然后解除引用。
由此想到结构体中的字段的引用:
比如
struct Ds {
int a;
int b;

}dse;

是不是我在 dse.a时,也是做了偏移?

那天有位老兄告诉我,在填充结构内容时候可以直接按照结构的偏移量自动填充:
--------------------

from:http://community.csdn.net/Expert/topic/4446/4446058.xml?temp=5.347842E-02

不用这么麻烦吧!如果你向把文件中的数据写进结构体,只需要在把数据写进文件时,按你需要的结构体形式处理一下就可以了!

例如:
struct source
{
char s[10];
int i[10];
float f[10];
};
main()
{
FILE *fp;
struct soucre SOURCE;
struct source DEST;

fp=fopen("c:\\test.txt","wb");
fwrite(&SOURCE,sizeof(SOURCE),1,fp);
fclose(fp);

fp=fopen("c:\\test.txt","rb");
fread(&DEST,sizeof(SOURCE),1,fp);
fclose(fp)

//处理下面的DEST就OK了
printf(DEST.s);
printf(DEST.i);
printf(DEST.f);

}

---------------------

我对此不太明白。请各位大大讲解一下。
看看谁讲的最透彻...
...全文
417 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
arden1019 2005-12-28
  • 打赏
  • 举报
回复
大致明白了,响应goodluckyxl的号召结贴了..
Tycool 2005-12-27
  • 打赏
  • 举报
回复
.不就是直接定位到该结构成员吗?不用考虑对齐的问题,多好。
arden1019 2005-12-27
  • 打赏
  • 举报
回复
等待...
arden1019 2005-12-27
  • 打赏
  • 举报
回复
那像最上面的代码这样填充结构体,可以么?
fread(&DEST,sizeof(SOURCE),1,fp);


benjaming1981 2005-12-26
  • 打赏
  • 举报
回复
得注意 struct 的按多少字节对齐问题
如何指定对齐方式,和编译器有关
查编译器手册
arden1019 2005-12-22
  • 打赏
  • 举报
回复
有没有详细一点的解释,或者告诉我那里有相关参考文献,谢谢
shu_yoyo 2005-12-22
  • 打赏
  • 举报
回复
??
wupangzi 2005-12-22
  • 打赏
  • 举报
回复
是的!
可以自己写个程序,取地址看看!
Mr_Yang 2005-12-22
  • 打赏
  • 举报
回复
mark
arden1019 2005-12-22
  • 打赏
  • 举报
回复
我就是想知道结构体里面这个“.”运算符是怎么工作的 :)
zhousqy 2005-12-22
  • 打赏
  • 举报
回复
mark
goodluckyxl 2005-12-22
  • 打赏
  • 举报
回复
arden1019(暮眠) 你要什么参考
说明确一点 从你问题没有发现嘛
我再给你相关的内容
zcz0918 2005-12-14
  • 打赏
  • 举报
回复
默认的是4字节对齐就是#pragma pack(4)
lz的意思是不是根据指针偏移给结构赋值啊,那样做不好,
比如你这个结构体source如果用(int)*((&DEST)+10*sizeof(char)) = 5;
C++编不过。不过C下能跑,但是并没有让DEST.i[0] = 5;
lisypro 2005-12-14
  • 打赏
  • 举报
回复
太高深了
guyanhun 2005-12-13
  • 打赏
  • 举报
回复
struct Ds {
int a;
int b;

}dse;

是不是我在 dse.a时,也是做了偏移?

应该没有了吧,dse 的地址 和 dse.a 在这里是一样的吧 ~~
jixingzhong 2005-12-13
  • 打赏
  • 举报
回复
对齐,解决了机器平台相异状况, 解决这个了问题 ~
fiftymetre 2005-12-13
  • 打赏
  • 举报
回复
自然对齐的问题
Mr_Yang 2005-12-13
  • 打赏
  • 举报
回复
mark
arden1019 2005-12-13
  • 打赏
  • 举报
回复
哈哈,不是你的程序难理解,是我想明白更多东西 :)
屋顶上的老猫 2005-12-13
  • 打赏
  • 举报
回复
呵呵,我的程序有什么难以理解的吗?
源码链接: https://pan.quark.cn/s/a4b39357ea24 在本研究中,我们将详细研究如何借助Python执行数据可视化,旨在剖析2018年期间中国四个主要城市——北京、上海、广州以及深圳的空气质量状况。通过绘制反映空气质量指数(AQI)与细颗粒物(PM2.5)变化趋势的图表,我们能够深入理解这些大都市全年的空气环境质量,并明确评估其优良天气所占的比重。 我们必须首先进行数据准备工作。在当前提供的压缩文件内,名为"2018天气"的文件极有可能是数据来源,其中可能收录了涉及四个城市每日空气质量监测的详细信息。这些数据通常涵盖日期、城市名称、AQI数值、PM2.5含量等核心参数。在Python编程环境中,我们惯常运用pandas库来对这类结构化数据进行高效的处理和分析。 1. **数据导入与初步处理**: - 利用`pandas.read_csv()`方法来导入存储为CSV格式的数据资料。 - 数据整理:对数据中的空白项、非正常数值进行修正,保证数据的精确性。 - 调整日期字段的格式,确保其能够适用于时间序列分析的需求。 2. **数据深度分析**: - 针对每个城市的AQI和PM2.5数据执行统计性描述,例如计算平均值、中位数、标准偏差等指标。 - 确定空气质量良好天气的天数,即那些AQI值低于75(依据中国的空气质量评估标准)的日数。 3. **数据呈现**: - 运用matplotlib或seaborn工具绘制折线图,直观展示四个城市在2018年全年的AQI和PM2.5变化动态。 - 可通过采用不同的颜色方案和线条类型来区分不同城市的数据系列。 - 添加必要的图示元素,如日期坐标轴、城市名称标注、图表标题及图例说明,以提升图表的可读...

70,038

社区成员

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

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