您的位置:首页 > 编程语言 > C语言/C++

c语言第二周总结-结构体

2015-06-20 21:00 405 查看
结构体

是一种自定义的数据类型, 可以用来定义变量.

结构体和数组一样,都是大容器,可以存储多个变量, 但是结构体比数组灵活,可以存储不同类型的数据.

定义: **注意:大括号最后面的分号; 每个成员变量之间的分号;

struct 结构体名
{
类型名 成员名;
类型名 成员名;
...
};


定义结构体变量: 通过结构体类型定义结构体变量名

struct 结构体名 变量名 = {初值};

结构体类型: struct + 结构体名

// 定义结构体
struct student { // student 结构体名
// 结构体成员
char name[20];//姓名  5个 4字节  不足,则分配新的空间
char gender;//存储性别  4字节, 剩余则空着
int age;//年龄         4字节
float score;//分数     4字节,该结构体占32个字节空间
}; // 分号是结构体定义的结束标志,必不可少.

// 定义结构体变量
struct student stu = {"liuy", 'w', 18, 89.6}; // 结构体类型: struct student, 结构体变量名stu


结构体成员的访问

结构体变量名. 成员变量名

例如
stu.name //stu的姓名


注:结构体成员变量与普通变量一样,可直接赋值


给字符串( 字符数组 )赋值, 一定要用字符串操作函数strcpy();

strcpy(stu.name, "jjj");
printf("%s\n", stu.name);
printf("%c\n", stu.gender = 'f');


注意

结构体变量可以直接整体赋值,但数组不可以.

stu1 = stu2;// stu1,stu2均为结构体student变量


关于数组,若初值为{0}; 数组维度要标明.

// int a[4] = {0};

// 可以用变量定义数组长度,但不能赋值

// 如 int a = 10; int b[a];

// 数组 不能直接赋值, 但可以通过结构体来赋值.

匿名结构体

结构体的声明与变量的定义组合在一起

//例如:
struct{

int num;

char name[20];
 char sex;
 float score;

}
stu1 = {1,”wukong”, ‘m’,99.5f},
stu2 = {2, “bajie”, ‘m’, 65.0f};


typedef

对现有类型创建一个类型别名

typedef 原类型名 新类型名;

typedef int tao;
tao a = 10; // 等同于 int a = 10;


可以使用typedef定义结构体

struct student {

...
};
typedef struct student Student;


typedef struct student {

...
}Student;


结构体内存占用(见上)

以最大成员变量类型所占空间为分配单位

按结构体成员声明顺序自上而下分配

分配空间不足以存储成员变量时, 分配新的空间单位

结构体嵌套

结构体的成员依然可以是结构体

但必须确保该嵌套结构体已经在之前定义过.

结构体数组

将多个结构体变量放到数组中,构成结构体数组

struct student students[10] = {0};


可以通过下标访问结构体变量

students[0].name; // 第⼀一个学⽣生的姓名


总结

结构体是一种⽐比较灵活的数据类型,并且与OC要学的类很相似。

结构体和数组的相互嵌套可以实现比较复杂的数据结构
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: