结构体
2018-10-30 本文已影响0人
SimpleSJ
1.什么是结构体
- 在实际问题中,一组数据往往具有不同的数据类型,而结构体就是用于保存一组不同类型的数据.结构体是一种“构造”而成的数据类型,那么在说明和使用之前必须先定 义它,也就是构造它。
2.为什么要有结构类型?
- 结构体可以把功能相同的数据组织起来(封装数据),存在一起,用的时候方便
- 在调用函数时,若 传递参数较多,传一个结构体相对而言简单一些。
- iOS开发中经常需要使用结构体
3.结构体类型的定义方式
- 方式一:先定义结构体类型,再定义变量
struct Student {
char *name;
int age;
};
struct Student stu;
- 方式二:定义结构体类型的同时定义变量
struct Student {
char *name;
int age;
} stu;
- 方式三:匿名结构体定义结构体变量
第三种方法与第二种方法的区别在于第三种方法中省去了结构名,而直接给出结构变量,这种结构体最大的问题是,不能再次定义新的结构体变量了。
struct {
char *name;
int age;
} stu;
4.如何访问结构体变量的成员?
struct Student {
char *name;
int age;
};
struct Student stu;
// 访问stu的age成员
stu.age = 27;
printf("age = %d", stu.age);
5.结构体变量的初始化
struct Dog
{
char *name;
int age;
double height;
};
// 1.定义的同时初始化
struct Dog sd = {"wc", 13, 5.0};
// 2.先定义再初始化(逐个初始化)
struct Dog sd1;
sd1.name = "ww";
sd1.age = 5;
sd1.height = 10.9;
// 3.先定义再初始化(一次性初始化)
struct Dog sd2;
// 特别注意: 结构体和数组有一点区别, 数组不能先定义再进行一次性的初始化, 而结构体可以
// 只不过需要明确的告诉系统{}中是一个结构体
sd2 = (struct Dog){"xq", 8, 8.8}; // 数组? 结构体?
// 4.指定将数据赋值给指定的属性
struct Dog sd3 = {.height = 1.77, .name = "ww", .age = 33};