指向一维结构体数组的指针,指向下一位需要多少字节?

比如typedefstructstudent{intnum;//学号charname[10];//姓名intsex;//默认男1,女0floatscore[5];};st... 比如 typedef struct student
{ int num; //学号
char name[10]; //姓名
int sex; //默认 男 1,女 0
float score[5]; };
struct student stu[5],*p;
p=stu; //sizeof(struct student)=40
展开
 我来答
百度网友4170dcb
2012-07-22 · 超过16用户采纳过TA的回答
知道答主
回答量:28
采纳率:0%
帮助的人:37.1万
展开全部

实际大小如程序运行结果所示.

按理总大小为:4+10+4+20=38;

但是结构体的大小确是40.

这个问题就涉及的计算机组成原理的内容,数据在计算机的存储器中以何种方式进行存储.

数据的边界对准`我也只知其一,不知其二了.

数据存放时以字节最长的数据为标准,进行对准.故选择20的,4+10+4=18,不足20,放入长度20的空间.整体40作为一个结构体单元的长度.(注:不用计算机,采用机制不用,可能存在差异)

happycxz
2012-07-22 · TA获得超过3146个赞
知道大有可为答主
回答量:3121
采纳率:0%
帮助的人:1641万
展开全部
p++; // 等效于stu++,就是一次加 sizeof(struct student) 个字节
你可以尝试着在你上述程序后面加:

p++;
printf("charactor num = %d\n", (int)(p-stu));
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
自由翱翔海阔天空
2012-07-22 · TA获得超过316个赞
知道小有建树答主
回答量:282
采纳率:0%
帮助的人:136万
展开全部
字节数为:sizeof(student);

直接用p+1就是下一位的指针;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式