黑马程序员技术交流社区

标题: 结构体介绍 [打印本页]

作者: 一步步往上爬    时间: 2016-1-15 00:58
标题: 结构体介绍
有一个函数,完成的功能是,可以帮你打印出姓名、年龄、身高、性别等等

  现在这些数据非常多,而且是不同类型的

然后我们就在想,能不能用一个变量就可以保存多个不同类型的数据

那样以后我们传给函数,是不是就只用传1个变量就行了??

像这样的,可以用一个变量保存多个不同类型的数据就叫结构体变量

  结构体的类型要自己定义

语法:struct 结构体名{

成员列表;

};

注意:定义结构体类型,大括号后面一定要加;,不加报错

结构体从逻辑上来说,是让多个不同类型的数据构成一个整体

比如说:姓名、年龄、身高等可以构成一个“人”这个整体

成员列表怎么写??

因为结构体是多个不同类型的数据组合在一起

所以成员列表应该是不同类型的数据放在里面

所以成员的定义格式是:

类型  成员名;

注意:后面要加分号

注意:上面定义的只是结构体类型,它并不存放任何数据

那么要存放数据必须定义这个类型的变量

  语法:struct 结构体名 变量名;

例:  struct Person zs;//变量名是zs  类型名:struct Person
结构体变量的初始化:

1.先声明后赋值

语法: struct 结构体名 变量名;

变量名.成员名;

例:

struct Person p; //p是变量名,struct Person合起来是类型

p.age = 16;

  注意:如果给字符数组赋值,不能直接用=,应该用strcpy

例:  strcpy(p.name,"刘德华");

2.在声明的时候就初始化

语法:struct 结构体名 变量名 = {成员1,成员2,成员3....成员n };

例:  struct Person zs = { "张三",16,155,"女" };

这种方法的话,给字符数组赋值就不需要加strcpy,编译器自动帮你完成了

3.先声明,后一次性赋值

语法:struct 结构体名  变量名;

变量名 = (struct 结构体名){成员1,成员2,成员3....成员n };

例:

struct Person zs;

zs = (struct Person){ "张三",16,155,"女" };

*/



/*


之前学得结构体变量定义的语法:

struct 结构体名 变量名;

那么现在有新的方法:

1.在定义结构体类型时就声明变量:

语法:

struct 结构体名{

成员列表;

}变量名1,变量名,变量名3....变量名n;

2.可以定义一个匿名的结构体并同时声明变量

语法:

struct {

成员列表;

}变量名1,变量名,变量名3....变量名n;

注意:1.匿名结构体的变量不能再给它一次性赋值了

2.匿名结构体只能在定义的时候声明变量,以后再也不能声明它的变量了

注意:当成员类型是指针字符串的时候可以用=

  赋值:变量名.成员 = 数据;

取值:变量名.成员;

结构体的取值:只能取成员,而且是一个成员一个成员的取

例子:

#include <stdio.h>

int main(int argc, const char * argv[]) {

struct person{

    char name[50];

    int age;

};

        struct person zhangsan = {"hahah",16};

    struct person wangwu;

    wangwu = (struct person){"zhhiuhash",18};

    return 0;

}


作者: 明阳天夏    时间: 2016-1-15 13:00
很好很详细
作者: xiangning    时间: 2016-1-15 23:25
不错不错 不错




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2