A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 一步步往上爬 中级黑马   /  2016-1-15 00:58  /  643 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

有一个函数,完成的功能是,可以帮你打印出姓名、年龄、身高、性别等等

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

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

那样以后我们传给函数,是不是就只用传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;

}

2 个回复

正序浏览
不错不错 不错
回复 使用道具 举报
很好很详细
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马