C-结构体

1、什么是结构体:
多种类型变量的集合
跟数组的不同之处:数组虽然也能存多个数据,但是只能存同类型的数据。但是结构体是不
光能存多个数据,并且可以允许数据是不同类型的。

2、为什么需要结构体:
把不同的多种类型的数据可以组织在一起,调用时十分方便,并且在调用函数时,如果需要传递的
参数过多,那么直接传一个结构体就要相对简单方便很多。

3、结构体的定义方法
基本形式:
struct 结构名{
成员列表
};
结构体里可以定义多个成员,这些成员可能是不同的类型,以及有自己不同的名字,所以对每个成员也必须做类型说明,形式为:
类型 成员名;
注意:后面的分号不要忘记!成员列表里可以写一个或多个成员,随意
如:
//定义一个学生的结构
struct stu{
char *name; int age; char gender; float score;
};

4、结构体变量的申明
1)结构体变量声明语法的一般形式: struct 结构体名称 变量名;
2)在定义结构体的同时声明结构体变量: 语法:struct 结构体名称{ 成员列表;}变量名列表;
3)匿名结构体定义结构变量: 语法:struct{ 成员列表;}变量名列表;

5、结构体变量的初始化
1)声明结构体变量后,单独为成员赋值
结构体变量是由不同的变量组织在一起的,这些变量叫成员。所以给结构体变量赋值的意思就是为结构体变量中的成员赋值。
语法:
结构体变量.成员名= 数据;
注意:如果结构体里面的成员是数组,那么不能直接对数组名赋值,因为数组名是一个常量。但是给数组每一个元素进行赋值是可以的。
如果想一次性给定义的字符数组赋值一个完整字符串该怎么办呢? strcpy:
strcpy(stu.name,”世界你好”);
2)在声明的时候就进行初始化操作
注意:如果是先声明后再用大括号进行初始化则一定要在大括号前面做-强制转换!!!
因为直接写个大括号,编译器并不知道你到底赋值的是数组还是结构体(数组也是用大括号),所以需要做类型说明
注意:如果用大括号来初始化,数据的顺序应该按照定义结构体时 成员自上往下的顺序进行赋值,否则会出错!

6、结构体的成员内又是个结构体变量
//生日结构体
struct birthday{
int year;
int month;
int day;
};
//人类结构体
struct Person{
char *name;
struct birthday birth;
char gender;
};
int main(int argc, const char * argv[]) {
struct Person p1;
p1.name = “苍老师”;
p1.birth.year = 1995;
p1.birth.month = 1;
p1.birth.day = 1;
p1.gender = ‘f’;
/* 也可以用下面这种方式
p1.birth = {1995,1,1};
还可以用这种方式
struct birthday birth = {1995,1,1};
p1.birth = birth; */
return 0;
}
我们发现,结构体里面还可以声明一个结构体成员,并且使用起来也很爽!

7、结构体作为函数参数
1)将结构体作为函数参数 值传递
2)将结构体成员作为函数参数 值传递
3)将结构体指针作为函数参数 引用传递

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值