c语言_Day23_07_24
c语言_Day23_07_241、结构体
1、结构体类型的声明
结构:一些值的集合,这些值称为成员,结构的每个成员可以是不同类型的变量
结构声明:
int main()
{
struct Book // 结构体名
{
// 成员定义
char name;
char author;
float price;
};struct Book book = { "Lonely Boy", "Tom", 14.99f };
printf("name:%s\n", book.name);
printf("author:%s\n", book.author);
printf("price:%f\n", book.price);
return 0;
}typedef重定义:
typedef struct Student
{
char name;
int age;
}Student;注:typedef结构体声明便于实例化结构体
2、结构体的初始化
语法:结构体类 结构体变量名= {初始化参数};
3、结构体成员访问
结构体的成员可以使任何类型(整形、浮点型、字符、指针,甚至是结构体)
typedef struct iMac
{
int id;
int size;
char type;
}iMac;
typedef struct iPhone
{
int id;
int size;
char type;
}iPhone;
typedef struct iPad
{
int id;
int size;
char type;
}iPad;
typedef struct Apple
{
iMac imac;
iPhone iphone;
iPad ipad;
}Apple;
int main()
{
iMac imac = { 1, 16, "macbook pro" };
iPhone iphone = { 1, 6, "iphone12" };
iPad ipad = { 1, 11, "ipad pro" };
Apple apple = { imac, iphone, ipad };
printf("我有一个%d寸的%s\n", apple.imac.size, apple.imac.type);
printf("我有一个%d寸的%s\n", apple.iphone.size, apple.iphone.type);
printf("我有一个%d寸的%s\n", apple.ipad.size, apple.ipad.type);
return 0;
}结构体访问操作符:
[*]点操作符:用于结构体变量访问其内部的成员
[*]箭头操作符:用于结构体指针访问其指向的成员
4、结构体传参
结构体传参分为两种:传值和传址
对于传值,形参获取成员时可通过点操作符;对于传址,形参获取成员时可通过箭头操作符
typedef struct Person
{
char name;
int age;
}Person;
// 传值
void PrintInfo(Person person)
{
printf("name:%s\n", person.name);
printf("age:%d\n", person.age);
}
// 传址
void ChangeInfo(Person* person, char name[], int age)
{
person->age = age;
strcpy(person->name, name);
}
int main()
{
Person person = { "Tom", 18 };
ChangeInfo(&person, "Lily", 20);
PrintInfo(person);
return 0;
}注:相比于传值,传址时形参无需开辟新空间来存储实参,运行效率更高,也更节约内存空间
2、调试技巧
1、bug与调试
bug:计算机中导致程序无法实现目标的问题
调试:查找bug的过程。通过程序错误的种种现象,推理出bug产生的位置与原因。
调试的基本步骤:
[*]发现程序错误(程序员、测试人员、用户)
[*]隔离或消除方法定位bug
[*]确定bug的原因
[*]提出解决问题的方案
[*]修正代码,重新测试
文档来源:51CTO技术博客https://blog.51cto.com/u_15285915/3180297
页:
[1]