共用体简单应用, 用共用体验证机器的大端序和小端序
共用体简单应用
应用需求:
当需要把不同类型的变量存放到同一段内存单元或对同一段内存单元的数据按不同类型处理则需要使用共用体数据结构。
信息存储
#include<stdio.h>
struct Staff
{
int num;
char name[30];
char job;
char sex;
union
{
int grade;
char position[50];
}gorp;
};
int main()
{
struct Staff s[2];
for (int i = 0; i < 2; i++)
{
printf("name:");
scanf("%s",s[i].name);
getchar();
printf("num:");
scanf("%d", &s[i].num);
getchar();
printf("sex:");
scanf("%c", &s[i].sex);
getchar();
printf("job:");
scanf("%c",&(s[i].job));
if (s[i].job == 't')
{
printf("position:");
scanf("%s",s[i].gorp.position);
}
else
{
printf("grade:");
scanf("%d",&s[i].gorp.grade);
}
}
printf("\n================\n");
for (int i = 0; i < 2; i++)
{
printf("name:%s\n",s[i].name);
printf("num:%d\n", s[i].num);
printf("sex:%c\n",s[i].sex);
printf("job:%c\n", s[i].job);
if (s[i].job == 't')
{
printf("job:%s\n",s[i].gorp.position);
}
else
{
printf("%d\n", s[i].gorp.grade);
}
}
return 0;
}
打印结果为:
用共用体验证机器的大端存储和小端存储
关于大端存储和小端存储我们已经在之前的博客进行说明,这里只是多提供一种验证大段存储和小端存储的方式。
#include <stdio.h>
union
{
char ch;
int i;
}un;
int main()
{
un.i = 0x11223344;
printf("%x\n",un.ch);
if (un.ch == 0x44)
printf("小端序\n");
else
printf("大端序\n");
return 0;
}
打印结果为: