C语言-08复合类型-结构体

一、结构体

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.不同结构体变量的成员是独立的,互不影响,一个结构体变量的成员更改,不影响另外一个。

相关推荐
千里码aicood几秒前
[含文档+PPT+源码等]精品基于Python实现的校园小助手小程序的设计与实现
开发语言·前端·python
讨厌下雨的天空几秒前
C++之list
开发语言·c++·list
大麦大麦29 分钟前
深入剖析 Sass:从基础到进阶的 CSS 预处理器应用指南
开发语言·前端·css·面试·rust·uni-app·sass
hhw1991121 小时前
c#面试题整理6
java·开发语言·c#
Icomi_1 小时前
【神经网络】0.深度学习基础:解锁深度学习,重塑未来的智能新引擎
c语言·c++·人工智能·python·深度学习·神经网络
蠟筆小新工程師1 小时前
Deepseek可以通过多种方式帮助CAD加速工作
开发语言·python·seepdeek
菜鸟00883 小时前
蓝桥杯第二天:2023省赛C 1题 分糖果
c语言·职场和发展·蓝桥杯
天道有情战天下3 小时前
python flask
开发语言·python·flask
zephyr_zeng3 小时前
VsCode + EIDE + OpenOCD + STM32(野火DAP) 开发环境配置
c语言·c++·vscode·stm32·单片机·嵌入式硬件·编辑器
帅弟1503 小时前
Day4 C语言与画面显示练习
c语言·开发语言