欢迎光临
我们一直在努力

C语言 — 结构体(上)

一.什么是结构体?

C 语言内置类型 例如:int / char / float 只能保存单一数据,而结构体(struct) 是一种自定义复合数据类型,可以把多个不同类型、相关联的数据当作一个整体。

比如描述一个学生:姓名、年龄、分数、性别,这些信息属于同一个对象,用结构体统一存放。

结构体的成员可以是:标量,数组,指针,甚至是结构体。

struct peo
{
char name[10];
int age;
char sex[5];
};

struct Stu
{
struct peo p;
int score;
char tele[20];
};

二.结构体语法定义及初始化

结构体语法定义

struct 结构体名 {
类型1 成员名1;
类型2 成员名2;

};

注意:不能缺少分号。

示例:定义学生结构体:

// 定义Student结构体类型
struct Stu {
char name[20]; // 姓名,字符数组
int age; // 年龄
float score; // 分数
char gender[5]; // 性别
};

这里的 struct Stu 是结构体类型。

这里还有匿名结构体(没有结构体名字,且只能当场使用)

struct {
int math;
int english;
} score;

初始化

struct peo
{
char name[10];
int age;
char sex[5];
};

int main()
{
struct peo p = {"zhangsan",19,"male"};
return 0;
}

结构体未完全初始化

struct Student s = {"小刚"};

未初始化部分自动初始化成0

嵌套结构体初始化

struct peo
{
char name[10];
int age;
char sex[5];
};

struct Stu
{
struct peo p;
int score;
char tele[20];
};

int main()
{
struct Stu s = { {"zhangsan",19,"male"},20,"12366779087"};
return 0;
}

三.结构体成员访问

用  . 运算符

struct peo p = {"zhangsan",19,"male"};
printf("%s %d %s", p.name, p.age, p.sex);

字符串不能直接=赋值,要用strcpy

用 -> 运算符

struct peo p = { "zhangsan",19,"male" };
struct peo* adr = &p;
printf("%s %d %s", adr->name ,adr->age, adr->sex);

四.结构体传参

值传递

void print1(struct peo p)
{
printf("%s %d %s", p.name, p.age, p.sex);
}

地址传递

void print2(struct peo *p)
{
printf("%s %d %s", p->name, p->age, p->sex);
}

赞(0)
未经允许不得转载:171主机测评 » C语言 — 结构体(上)
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址