黑马程序员—C语言—结构体


*** 结构体的作用 ***

结构体是一种构造类型,使用非常频繁。
当我们需要把不同类型的数据构成一个整体时,便会用到结构体了。

*** 结构体类型的定义 ***
注意: 在函数里面或者外面都可以定义(影响作用域为全局类型或者局部类型)。
举例:
struct Person
{
int age;
double height;
char *name;
};   //此时只是定义了一个类型,并不分配存储空间

*** 结构体变量的定义 ***

举例:

struct Person per;

struct Person是变量的类型,per是变量的名称。


*** 成员变量的赋值 ***

1、 struct Person per = {22,1.75,"haha"};

2、 struct Person per = {.height = 1.75,.name = "haha",.age = 22};

3、 struct Person per;

    per = {22,1.75,"haha"};  //错误

    per.name = "haha";  per.age = 22;  //正确


*** 结构体类型的其余定义方式 ***

1、 定义结构体类型的同时, 定义一个结构体变量

struct Student { ... } stu;       // 结构体定义就相当于int,这样就相当于int stu;

stu.name = "MJ"; stu.age = 27; stu.height = 1.80;

或者

struct Student { ... } stu = {27, "mj", 1.8f};  // 可以直接赋值,相当于int s = 5;

这样定义的结构体类型还可以继续使用:struct Student stu2;

2、 如果只需要定义一个变量,那么结构体名可以省略,直接定义一个结构体变量

struct { ... } stu = {27, "mj", 1.8f};

这种情况就不能再定义其它同类型的变量了,只能定义一个 。


*** 嵌套 ***

举例:


struct Date
{
int year;
int month;
int day;
};
struct Student
{
int no;  //学号
struct Date birthday;  //生日
struct Date ruxueDate;  //入学日期
};


*** 结构体数组 ***

举例:

struct Student 
{
int age;
char* name;
} a[2] = { {22, "qwe"}, {23, "abc"} };  

也可以定义结构体类型和定义数组分开:
struct Student 
{
...
};
struct Student a[2] = {{}, {}};  // 定义一个struct Student类型的数组
struct Student b[2] = {{}, {}};

注意:struct Student就是一个类型,它们是一个整体。


*** 结构体指针 ***

举例:

struct Student 
{
...
};
struct Student *s;         // 定义一个struct Student类型的指针
struct Student stu = {...};  // 定义同种类型的结构体变量
s = &stu;              // 指针指向同种类型的变量
 
使用结构体指针访问成员,两种方式:
(*s).age;  // 相当于 stu.age ,括号不可以省略
s -> age;  // -> 成员访问符,通常使用这种方式



------- android培训、ios培训、期待与您交流! ----------

详细请查看:www.itheima.com


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值