自定义数据类型(结构体)

本文详细介绍了如何使用结构体定义自定义数据类型,并演示了通过成员运算符访问结构体变量的方法,包括直接使用变量和指针两种方式。同时对比了不同输出函数对结构体数据的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

自定义数据类型(结构体)

//struct + 结构体名称

例如:

struct Student

{

char name[20];

int age;

//struct Student*p;可以定义一个包含自身的指针

//struct Student h;//error  不可以定义一个包含自身的指针

}

//自定义数据类型,定义完成后,其和内置类型一样使用。

//比如和 int a; int arr[10]; int *p; char *p; 一样使用

//因为聚合类型中未初始化的为0;所以age未初始化给值时默认值为0

 

我们现在定义一个 名字为“张飞”,年龄为21岁的Student stu1;

struct Student stu1={"zhangfei",21};

现在我们突然发现名字和年龄登记错了,其实是“关羽”,年龄为32岁。

我们怎么访问到结构体变量中呢:

 

******结构体中普通变量可以通过 ” . ” 来访问它的成员******

struct Student stu1={"zhangfei",21};

stu1.age=32//访问stu1的age成员并将其改为32

因为名字是字符串,所以我们得用strcpy库函数来拷贝

strcpy(stu1.name,"guanyu");

 

 

******结构体中指针变量可以通过 ” -> ” 来访问它的成员******

struct Student *stu1={"zhangfei",21};

stu1->age=32;

修改名字和上面一样,得用strcpy库函数来拷贝

strcpy(stu1->name,"guanyu");

//因为在C语言中,自带解引用的符号有两个,“[]”和“->”。

//所以   stu1 -> name = (*stu1) . name

 

 

 

//输出时,我们有3种方法,一种直接printf,一种用参数列表为普通变量的Show输出函数,一种用参数列表为指针变量的Show输出函数,我们比较一下优略。

①:

我们直接用printf输出一下“张飞”,21岁看看:

  

我们将名字改成“关羽”,年龄改成32岁:

改岁数容易想到 stu1.age=36;

而改名字得用到拷贝函数strcpy了,而不是stu1.name=”guanyu”;//整体赋值只有一次机会

我们输出看看:

 

 

②:

这时候,我们改试着用参数列表为普通变量的Show输出函数内修改,且主函数再输出一遍,看看修改成功了没:

 

 

 

你会发现,子函数修改好后不会影响到主函数。

 

③:

现在我们试着用参数列表为指针变量的Show输出函数内修改,且主函数再输出一遍,看看修改成功了没:

 

 

 

我们会发现,子函数修改好后会影响到主函数,将主函数也修改。

 

综合来看,我们平时输出结构体时,最好直接printf输出或者用参数为指针的输出函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值