S1E51:共用体
待更新 1 1 朕想知道 11
1
没找到答案,就尝试自己做了下,有啥见解改进的欢迎各位指正!
本帖最后由 wang-123 于 2022-3-30 22:14 编辑#include <stdio.h>
struct
{
char name;
int num;
char sex;
char job;
union
{
int grade; //班级
char position; //职务
}sort;
}person; //两学生一老师
void main()
{
int i;
for(i=0; i<3; ++i)
{
printf("Please input name,num,sex(M/F),job(s/t) \n");
scanf ("%s %d %c %c", &person.name,&person.num,&person.sex,&person.job);
if (person.job == 's')
{
printf ("Please input grade: ");
scanf("%d", &person.sort.grade);
}
else if(person.job == 't')
{
printf ("Please input position: ");
scanf("%s", &person.sort.position);
}
}
printf("\n");
printf("name num sex job(grade/position)");
for (i=0; i<3; ++i)
{
if(person.job == 's')
{
printf ("\n %-6s %-6d %-6c %-6d ",person.name, person.num, person.sex, person.sort.grade);
}
else
{
printf ("\n %-6s %-6d %-6c %-6s ",person.name, person.num, person.sex, person.sort.position);
}
}
printf ("\n");
}
{:10_256:} 0
[知识点备忘]S1E51共用体
1.union 成员公用一块内存区域
union data
{
int i;
char ch;
float f;
} a, b, c;
2. 它的值和类型是什么?看最后最近的赋值语句
3.占用多大内存,sizeof
看占用内存最大的成员,再加上对齐量(32位系统中,凑到4*n个字节,64位系统中,凑到8*n个字节)
页:
[1]