#define定义常量和宏
#define可以定义常量和宏
#define MAX 100
直接定义MAX这个常量的值
#define ADD (a,b)((a)+(b))
定义ADD这个宏的算法 a和b都可以为一个值或者一个式子,如果不加小括号的话,计算的时候会把整个式子写出来再计算
//例如
#define ADD(a,b) a+b
int main()
{
int x = 10;
int y = 20;
printf("%dn", 4 * ADD(x , y));
return 0;
}
打印出来的结果就是60(4 * 10 + 20)
在前面定义宏的时候加上括号,打印出来的值才会是120(4 *(10 + 20))
结构体
结构体可以让c语言创建新的类型出来
例如创建一个学生的类型
//创建学生类型
struct students
{
char name[20];
int age;
double score;
};
int main()
{
struct students a = { "张三" , 18 , 100 };//创建结构体“学生a”并初始化
struct students b = { "李四" , 20 , 92.5 };//创建结构体“学生b”并初始化
struct students c = { "王五" , 19 , 97.3 };//创建结构体“学生c”并初始化
return 0;
}
这样就创建了一个类型“学生”,并在这个结构体内部创建了三个结构体,这三个结构体都有三个元素组成:“名字,年龄,分数”
并且这三个元素都存储在同一个结构体内部
结构体的使用
//创建学生类型
struct students
{
char name[20];
int age;
double score;
};
int main()
{
struct students a = { "张三" , 18 , 100 };//创建结构体“学生a”并初始化
struct students b = { "李四" , 20 , 92.5 };//创建结构体“学生b”并初始化
struct students c = { "王五" , 19 , 97.6 };//创建结构体“学生c”并初始化
printf("%s %d %lfn", a.name, a.age, a.score);
//打印a学生的数据,“.”操作符是用来访问结构体中的成员的
printf("%s %d %lfn", b.name, b.age, b.score);
printf("%s %d %lfn", c.name, c.age, c.score);
return 0;
}
其中“.”操作符是用来访问结构体中的成员的
结构体变量名+“.”+成员变量名
还可以用“->”操作符,用于指针变量
结构体指针->成员变量名
printf("%s %d %lfn", a.name, a.age, a.score);
//打印a学生的数据,“.”操作符是用来访问结构体中的成员的
struct students* pa = &a;//创建指针pa
printf("%s %d %lfn", pa->name, pa->age, pa->score);//结构体指针->成员变量名
printf("%s %d %lfn", (*pa).name, (*pa).age, (*pa).score);//(*结构体指针)+“.”+成员变量名


![[C语言]自学计划day4(一)(define的定义和结构体) [C语言]自学计划day4(一)(define的定义和结构体)](http://www.mshxw.com/aiimages/31/529219.png)
