一、结构体
1.结构体struct
struct关键字,允许自定义复合数据类型,将不同类型的值组合在一起,这种类型称为结构体类型。
2.使用步骤
第一步:创建或声明结构体
第二步:定义结构体变量
第三步:调用并操作结构体变量成员
1.1定义结构体(在main的外部来定义) 以人为例:姓名 年龄 性别 家庭住址 电话
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
//定义方法1: (推荐)
struct Person {
char name[20];
int age;
char gender[10];
char address[50];
char tel[12];//长度要比实际多
};
//定义方法2:(推荐)
typedef struct Person1 {
char name[20];
int age;
char gender[10];
char address[50];
char tel[12];//要比实际多
}Person1;
//定义方法3: PERSON2对结构体类型struct Person2重命名
typedef struct Person2 {
char name[20];
int age;
char gender[10];
char address[50];
char tel[12];//要比实际多
}PERSON2;
//定义方法4:
int main() {
1.2定义结构体变量
// 方法一 直接赋值初始化
struct Person p1 = { "佳佳",18,"女","高新区","12345678910" };
//方法二 先声明再赋值
struct Person p2;
1.3调用结构体成员(赋值)
/*p1.name = "喵喵";*/ //不能重新赋值,字符数组名是常量
strcpy(p2.name, "喵喵"); //strcpy 需引入<string.h>头文件
p2.age = 20;
strcpy(p2.gender, "男");
strcpy(p2.address, "中原区");
strcpy(p2.tel, "10987654321");
1.4查看取出数据
printf("%s %d %s %s %s\n", p1.name, p1.age, p1.gender, p1.address, p1.tel);
printf("%s %d %s %s %s\n", p2.name, p2.age, p2.gender, p2.address, p2.tel);
//定义方法3中------查看数据
PERSON2 p3 = { "肖肖",18,"男","高新区","12345678910" };
printf("%s %d %s %s %s\n", p3.name, p3.age, p3.gender, p3.address, p3.tel);
二、结构体成员的访问(使用)
结构体成员的使用,分为两种情况:
1、通过结构体变量访问成员 语法:结构体变量名.成员
2、通过结构体指针变量访问 语法:结构体指针变量->成员
//通过结构体指针变量访问 语法:结构体指针变量->成员
strcpy(p3.name, "chhaoyang");
printf("%s %s\n", p3.name, (&p3)->name); //成功打印,chhaoyang chhaoyang
struct Person p6;
printf("%s %s", p6.name, (&p6)->name); //没有赋值,打印出垃圾数据
总结:
1.在创建一个结构体变量后,需要给成员赋值。在没有给成员赋值的情况下调用,打印的值是垃圾数据,可能导致程序异常终止。
2.不同结构体变量的成员是独立的,互不影响,一个结构体变量的成员更改,不影响另外一个。