结构体
一、结构体的定义
1.第一种定义结构体的方式
//struct是关键字,date是结构体的类型名
struct birthday
{
int year;
int month;
int day;
};
//不要忘记结尾的封号
2.第二种定义结构体的方式
//这里的b1,b2是该结构体的变量,这里未写类型名表示只在程序中短暂使用
struct
{
int year;
int month;
int day;
} b1,b2;
3.第三种定义结构体的方式
//这里既定义了类型名,也创建了b1,b2的变量
struct birthday
{
int year;
int month;
int day;
} b1,b2;
二、创建结构体类型变量
struct birthday b1;
//如上结构体的定义,如果未赋初值默认是0
三、结构体的赋值
1.普通赋值
struct birthday b1;
b1.year=2001;
b1.month=1;
b1.day=1;
2.直接赋值
struct birthday b1 = {2001,1,1};
3.通过指针为其赋值
struct birthday b1;
struct birthday * p=&b1;
p->year=2001;
p->month=1;
p->day=1;
四、访问结构体中属性的值
1.通过"."访问
struct birthday b1 = {2001,1,1};
print("%d",b1.year);
2.指针通过"->"访问
struct birthday b1;
struct birthday * p=&b1;
print("%d",p->year);
五、结构体与函数
1.结构体可以做形参,也可以做实参。
2.返回值类型也可以是结构体类型。
3.当结构体作为实参传递的时候,传递的方式是值拷贝,在函数中修改结构体的值并不会影响原始的值。
4.如果结构体以指针的形式传递过去,在函数中对结构体的操作都影响原始的结构体。
六、结构体与指针
1.结构变量的名字并不是结构变量的地址,如果需要得到结构变量的地址,必须使用&运算符。
2.使用结构指针的时候,取某个属性的地址时,需要使用&运算符,例如&p.year,在使用scanf函数输入的使用可以使用到。
七、结构体与数组
1.可以使用定义结构类型当作数组的类型。
struct birthday bs[100];
注意:结构体也可以嵌套使用。