//声明一个学生类型,是想通过学生类型来创建学生变量(对象)
//描述学生就得有属性啥的。名字,电话,性别,年龄
struct Stu
{
char name[20];//名字
char tele[12];//电话
char sex[10];//性别
int age;//年龄
};
struct Stu s3;//创建全局结构体变量
int main()
{
struct Stu s1;
struct Stu s2;//创建结构体变量
return 0;
}
如何选择
1.函数传参的时候,参数是需要压栈,会有==时间和空间上==的系统开销。
2.如果传递一个结构体对象的时候,结构体过大,参数压栈的的系统开销比较大,所以会导致性能的下降。 ==结论: 结构体传参的时候,要传结构体的地址。== ==位段== 什么是位段
位段的声明和结构体类似,有两个不同
1.位段的成员必须是int,unsiged int 或 signed int
2.位段的成员后面有一个冒号和一个数字
#include<stdio.h>
enum Option
{
exit,
add,
sub,
mul,
div
};
void menu()
{
printf("*********************\n");
printf("****1.add 2.sub****\n");
printf("****3.mul 4.div****\n");
printf("**** 0.exit ****\n");
printf("*********************\n");
}
int main()
{
int input = 0;
int a = 0;
int b = 0;
int c = 0;
do
{
menu();
printf("请选择:>");
scanf("%d",&input);
printf("请输入两个操作数:>");
scanf("%d%d", &a, &b);
switch (input)
{
case add:
c = a + b;
printf("%d\n", c);
break;
case sub:
c = a - b;
printf("%d\n", c);
break;
case mul:
c = a * b;
printf("%d\n", c);
break;
case div:
if (b == 0)
{
printf("分子不能为0\n");
break;
}
else
{
c = a / b;
printf("%d\n", c);
break;
}
default:
break;
}
} while (input);
return 0;
}
#include<stdio.h>
int main()
{
int a = 1; //0x 00 00 00 01
//低 -------------> 高
//01 00 00 00 小端存储
//00 00 00 01 大端存储
//想办法拿到a的第一个字节
char* pc = (char*)&a;
if (*pc == 1)
{
printf("小端存储");
}
else
{
printf("大端存储");
}
return 0;
}
现在学到共用体正好利用他的特殊情况
#include<stdio.h>
union Un
{
char c;
int i;
};
int main()
{
union Un u = { 0 };
u.i = 1;
if (u.c == 1)
{
printf("小端存储");
}
else
{
printf("大端存储");
}
return 0;
}