【好程序员笔记分享】—— C语言中的结构体
来源:互联网 发布:批量链接下载软件 编辑:程序博客网 时间:2024/06/05 15:07
C语言中可以通过数组来表示每一个元素都是相同类型的数据,但当我们遇到元素之间是不同数据类型的整体刚怎么办呢?这个时候,我们就要用到结构体了。下面我们来看一个结构体的例子。代码如下:
#include <stdio.h>struct Studer{ char *name;//C语言中没有字符串类型,定义字符串用字符指针或字符数组实现 int number; char class[20];};int main(int argc, const char * argv[]) { //定义一个结构体,结构体中还可以除递归定义自己以外的其他结构体 struct People { char *sex; int age; float height; struct Studer stu; } peo = {"男",10,1.4f,{"小明",23,"三年级一班"}}; printf("修改前%s的年龄是%d岁\n",peo.stu.name,peo.age); peo.age=11; printf("修改后小明的年龄是%d岁\n",peo.age); //定义一个结构体数组 struct People a[2] = {{"男",10,1.4f,{"小军",25,"三年级一班"}},{"女",10,1.4f,{"小红",24,"三年级一班"}}}; printf("修改前%s的学号是%d号\n",a[0].stu.name,a[0].stu.number); a[0].stu.number=10; printf("修改后%s的学号是%d号\n",a[0].stu.name,a[0].stu.number); //定义一个结构体指针 struct People *p = &peo; printf("修改前%s的身高是%.1f米\n",(*p).stu.name,(*p).height); (*p).height=1.45f; printf("修改后%s的身高是%.2f米\n",(*p).stu.name,(*p).height); //定义一个指向数组的结构体指针 struct People *q = &a[0]; printf("修改前小军的名字是%s,他的身高是%.2f米\n",(*q).stu.name,(*q).height); (*q).stu.name="晓军"; (*q).height=1.65f; printf("修改后小军的名字是%s,他的身高是%.2f米\n",(*q).stu.name,(*q).height); return 0;}
输出结果如下:
修改前小明的年龄是10岁修改后小明的年龄是11岁修改前小军的学号是25号修改后小军的学号是10号修改前小明的身高是1.4米修改后小明的身高是1.45米修改前小军的名字是小军,他的身高是1.40米修改后小军的名字是晓军,他的身高是1.65米
上面代码中有结构体的定义,也有包含结构体的结构体定义,还有结构体数组的定义和结构体指针的定义,甚至还有指向数组的结构体指针。一般对结构体变量的操作是以成员为单位进行的,一般形式:结构体变量名.成员名。结构体数组中也可以用数组下标访问每一个元素,就跟普通数组的用法一样,本例中的 a[0].stu.number就是其中的一种使用。结构体的指针也是跟我们普通指针的用法类似。
好了,今天就学习这么多,我们好好将这个例子理解并融汇贯通。
0 0
- 【好程序员笔记分享】—— C语言中的结构体
- 【好程序员笔记分享】—— C语言中的枚举
- 【好程序员笔记分享】—— C语言中的宏定义
- 【好程序员笔记分享】—— C语言中的文件包含
- 【好程序员笔记分享】—— C语言中的extern关键字
- 【好程序员笔记分享】—— C语言中的static关键字
- 【好程序员笔记分享】—— C语言指针的理解
- 黑马程序员——C语言中的结构体
- 【好程序员笔记分享】——继承
- 【好程序员笔记分享】——分类
- 【好程序员笔记分享】——协议
- 【好程序员笔记分享】——归档
- 黑马程序员——C语言笔记之循环结构
- 【好程序员笔记分享】—— 通过指针遍历字符串中的所有字符
- 【好程序员训练营学习笔记分享1】--c语言指针(一)
- C语言结构体—学习笔记
- 黑马程序员——ios学习笔记 C语言 结构体&链表&枚举
- 黑马程序员——C语言笔记之结构体以及枚举
- Bootstrap3 CSS中引用,列表,描述
- 广度优先搜索:迷宫问题
- 人生面临抉择
- 什么时候需要使用eval转换json
- Spring拦截器与过滤器的区别
- 【好程序员笔记分享】—— C语言中的结构体
- 2015年6月22日-ps菜单
- Android学习笔记之—XML文件的序列化
- swicth循环结构
- java-String中的 intern()
- 单例类(Singleton)一个类始终只能创建一个实例
- openMP的一点使用经验【非原创】
- HTML页面加载和解析流程
- 日语学习之沪江N3基础 20150622 -2