结构体小练习

这篇博客介绍了C语言结构体的相关知识,包括结构体定义的正确方式、结构体变量和标签的区别、结构体占用内存的对齐原则,以及如何通过'.'运算符访问结构体元素。题目指出结构体占空间应为32字节,并提醒读者理解结构体的内存布局和运算符的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

结构体小练习

题目描述

关于结构体表述正确的是(多选)

struct tag{
	int a;
	char b;
	double c;
	int d[3];
}list
  • #### A.以上结构体定义是正确的

  • #### B.结构体定义必须在主函数外面

  • #### C.tag是结构体变量

  • #### D.结构体占空间为25字节

  • #### E.可以直接用printf输出结构体内相应的元素

  • #### F.‘.’运算符不可以连续使用

  • #### G.以上全错


答案为 E

本次共12人作答,截至发布共5人选 到 正确答案,无人选择正确,2人未作答


选项解析

A.

以上结构体定义是错误的!

struct tag{
	int a;
	char b;
	double c;
	int d[3];
}list;

这样的结构体定义才是正确的,最后需要加’;’,这是一个标签为tag的结构体,list为这个结构体的结构体变量

B.

结构体定义不一定必须在主函数外面!

C.

tag是结构体标签,list是结构体变量

D.

结构体所占空间不是25字节,因为结构体的空间并不是简单的类型空间相加(4+1+8+3*4=25)

结构体空间有“对齐”的要求,要满足三个条件

  1. 首地址能够被结构体中最大成员所占字节数整除
  2. 每个元素相对于首地址的偏移是该元素长度的整数倍
  3. 结构体大小是结构体中最长基本类型所占字节的整数倍

所以这里的空间为32字节

printf("%d",sizeof(list));

运行结果:

32
E.

可以用printf输出对应元素,例如

printf("%d,%c,%lf",list.a,list.b,list.c);
F.

'.'运算符可以连续使用,例如结构体嵌套里

struct date{
	int year;
	int month;
	int day;
};

struct time{
	struct date d;
	int hour;
	int minute;
	int second;
}t;

如上,结构体t里面嵌套了一个结构体,那么我要访问t里面的‘year’。那么就要用t.d.year访问

G.

以上全错?

我就说我最后加了一个这选项…还真有人选了(狗头
记得好好看下,可以用‘.’运算符访问的



好好看书呀,学习的事我不再盯了,毕竟是自己的事,有不会的问题尽快问,不是说到最后一天了才说我不会2333然后就不做了。

加油加油!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值