结构体的定义和初始化
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
//定义一个结构体数据类型
//关键字 struct 代表这个是一个结构体类型,
//stu 是这个结构的名字
//整个结构体的类型是 struct stu
// 结构体类型struct stu {}中是结构体的成员,一个有3个成员,每个成员的类型可以是
//任意的类型
//定义结构体类型时,{}后面记得加分号
//注意定义结构struct stu,它只是一个类型,一个模板,没有空间,不可以给结构体成员赋值
struct stu
{
int id ;
int age;
char name[128];
} a;//定义类型时,同时定义了两个结构体变量struct stu a;
struct stu c;
int main()
{
//struct stu d = {1,20,"ubunqu"};
//struct stu d = { .age=20 };//给部分成员初始化,其他成员内容为0
struct stu d;
//如何给结构体成员赋值(如何操作结构体成员)
//如果通过结构体变量操作结构体成员,使用点域.操作
/*d.id = 2;
d.age = 20;
strcpy(d.name , "world");
printf("%d %d %s\n",d.id,d.age,d.name);*/
//如果通过结构体的地址操作结构体成员,使用->
(&d)->id = 3;
(&d)->age = 20;
strcpy((&d)->name, "world");
printf("%d %d %s\n", (&d)->id,(&d)->age,(&d)->name);
system("pause");
return 0;
}
结构体指针
结构体套指针
结构体数组作为函数的形参
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
struct c13
{
int id;
char name[128];
};
//void set_num(struct c13 num[5] )
void set_num(struct c13 *p,int n )
{
for (int i = 0; i < n; i++)
{
// (*(p + i)).id = i + 10;
p[i].id = i + 10;
//(p + i)->id = i + 10;
char buf[128] = "";
sprintf(buf,"%d%d%d",i,i,i);
strcpy(p[i].name,buf);
}
}
int main()
{
struct c13 num[5];
memset(num,0,sizeof(num));
set_num(num,sizeof(num)/sizeof(num[0]));// num = &num[0]
for (int i = 0; i < sizeof(num) / sizeof(num[0]); i++)
{
printf("%d %s\n",num[i].id,num[i].name);
}
system("pause");
return 0;
}
const修饰的结构体指针变量
int main()
{
struct c13 a;
struct c13 b;
// struct c13 const *p = &a;
//p->id = 100; err const修饰的是*,不能通过指针p取修改p指向的那块空间
struct c13 * const p = &a;
//p = &b; const修饰的是指针变量p,不能修改p本身的内容(指向)
system("pause");
return 0;
}
共用体和大小端
共用体:多个变量共用同一块内存空间’'同一时刻,只能有一个变量起作用
大小端:
使用共用体验证大小端
union abc
{
//char a;
short b;
char buf[2];
};
int main()
{
union abc tmp;
tmp.b = 0x0102;
if (tmp.buf[0] == 0x01)
{
printf("big\n");
}
else
{
printf("little\n");
}
}
枚举
将枚举类型的变量的值一一列举出来,枚举变量的值只可以赋值为{}里面的值,{}里面的值是常量
枚举{}里面列举的常量的值默认是从0开始
enum ab { SUN , RAIN, SNOW};
int main()
{
enum ab tmp = SNOW;
printf("%d %d %d\n",SUN,RAIN,SNOW);
int a = 0;
scanf("%d",&a);
if (SUN == a)
{
printf("sleep\n");
}
else if(RAIN == a)
{
printf("music\n");
}
else if (SNOW == a)
{
printf("game\n");
}
system("pause");
return 0;
}