C程序范例(3)——结构体
一、结构体类型定义。
结构体类型和数组类型一样,需要由程序员定义,必须限定以后使用。
struct 类型标识符 {类型名 成员名;类型名 成员名;... };
其中,struct 是结构体类型定义的关键字,他与其后用户指定的类型标识符共同组成结构体类型名。例如学生结构体类型定义如下:
struct st_type {char num[7];char name[20];char sex;int age;float score;char address[30]; };
说明:(1)定义结构体类型只是规定了这种数据类型的模型,在编译时并不赋给他存储空间,所以绝对不允许对定义的结构体类型进行存取数据的操作。
(2)结构体成员可以是简单变量、数组或是另一个结构体变量。例如:
struct d_type {int year;int minth;int day; }; struct s_type {char num[7];char name[21];char sex;struct d_type birthday;float score;char address[41]; };
(3)结构体成员名可以与程序中其他变量名同名,系统会自动识别它,不会混淆。
(4)结构体类型定义可以放在函数外部(全局有效),放在函数内部(只在本函数内部有用)
二、结构体变量。
1、结构体变量的定义。
(1)一般形式定义。
struct 标识符 {结构体成员表; }; struct 标识符 结构体变量;
(2)在定义类型的同时,定义变量。
struct 标识符 {结构体成员表; }结构体变量名表;
2、结构体变量的初始化。
注意:初始化个数不得超过成员数,若小于成员数,则剩余成员将被初始化为默认值。
3、结构体变量的引用。
对结构体变量整体的引用限制较大,只能对他进行一部分操作。
(1)可作为函数的形参,实参或是函数返回值等进行函数的数据传递。
(2)可以整体赋值,但是赋值号左边必须是结构体变量,右边必须的是同一种结构体类型的结构体变量或函数返回值,如:student1=student2;
(3)结构体变量成员的引用。
结构体变量名.成员名
三、结构体数组。(相同类型的结构体做元素就可以构成结构体数组,其中,每个元素内部含有不同类型的成员)
1、结构体数组定义类型。
struct st_type
{
int year;
int month;
int day;
};struct st_type s[3];//定义了一个结构体数组s,他有三个元素,数组中的各元素在内存中是连续存放的。
2、结构体数组初始化。
结构体数组在定义中也可以同时初始化。
结构体类型名 结构体数组名【数组长度】
3、用结构体数组存储学生信息,每个学生有姓名,学号,成绩。
#define N4
#include “stdio.h”
struct {int num;char name[11]; int score;}t,s[N];
main(){int i,j,k;print("请输入第一个学生的学号:");
scanf("%d",&k);}
四、结构体和函数。
1、结构体作函数参数。
结构体成员,可以作为函数实参,形参为与该成员同类型的变量。
void printf(struct st_type s)
{printf("输出: 姓名 性别 年龄 成绩");printf("%s%s%c",s.name,...)}
2、返回值为结构体类型的函数。
结构体类型名 函数名 (形参表)
3、typedef语句。
typedef语句可以为系统已经定义的简单类型(如int double float 等)另起一个名称。也可以为自己定义的结构体枚举等类型另起一个名称。
typedef 类型名 新类型名
如:typedef int INTEGER;就是将int类型名修改为INTEGER
使用typedef语句的优点:(1)可以缩写长的类型定义,使用便于理解的数据类型名,使程序简洁,可读性强。
(2)可将程序参数化,便于移植。
转载于:https://www.cnblogs.com/yjds/p/6507244.html
C程序范例(3)——结构体相关推荐
- c语言结构体共用体枚举实例程序,10-C语言结构体-共用体-枚举
结构体是什么? 结构体和数组一样属于构造类型 数组是用于保存一组相同类型数据的,而结构体是用于保存一组不同类型的数组 定义结构体 在使用结构体之前必须先定义结构体类型,因为C语言不知道你的结构体中需要 ...
- 【头歌C语言程序与设计】结构体
目录 写在前面 正文 第1关:结构体变量的初始化和引用 第2关:结构体排序 第3关:结构体存储数据 第4关:结构体存储学生信息 写在最后 写在前面 本文代码是我自己所作,本人水平有限,可能部分代码看着 ...
- 结构体怎么赋值_Go 经典入门系列 16:结构体
点击上方蓝色"Go语言中文网"关注,每天一起学 Go 欢迎来到 Golang 系列教程的第 16 个教程. 什么是结构体? 结构体是用户定义的类型,表示若干个字段(Field)的集 ...
- 一文攻破结构体-C语言
一文攻破结构体-C语言 1 什么是结构体 1.1 结构体类型 结构体(structure)是由不同类型数据组成的组合型的数据结构,可以看做变量的集合.结构体也是一个数据类型,就像和 int.char一 ...
- new 一个结构体数组_每天一个IDA小技巧(四):结构体识别
之前提到IDA可以将一长串的数组数据声明变成一行数组声明,简化反汇编代码,对于结构体,IDA也同样支持通过各种设置工具来改善结构体代码的可读性. 这篇文章的目标是将[edx+10h]之类的结构体元素访 ...
- 7.IDA-创建结构体
结构体分类 结构体的一个显著特点在于,结构体中的数据字段是通过名称访问,而不是像数组那样通过索引访问.不好的是,字段名称被编译器转换成了数字偏移量.结果,在反汇编代码清单中,访问结构体字段的方式看起来 ...
- 【C语言】结构体赋值
结构体在 C 程序中使用的较为频繁,能对数据有一定的封装的作用.对一个结构体赋值时,经常采用的方式是,分别对其成员变量赋值.那么能否将一个结构体用赋值号("=")直接赋值给另一个结 ...
- java开发C编译器:结构体的解析和执行
用java开发C语言编译器 结构体是C语言中,最为复杂的原生数据结构,它把多种原生结构结合在一起,形成一个有特点含义的数据结构,要实现一个完整的C语言编译器或解释器,就必须要拥有对结构体的解析能力,本 ...
- Linux C 深入分析结构体指针的定义与引用
关于结构体的基础知识,网上书上都一大堆,这里就不赘述了,下面我们要学习的是结构体指针. 介绍结构体指针之前,先给大家看一个小程序: [cpp] view plaincopy #include < ...
- c语言中申请内存并初始化,c语言中结构体的定义、初始化及内存分配
#include struct person { char *name; int age; }; int main() { //结构体可以定义在函数内,也可以定义到函数外 //相当于全局变量与局部变量 ...
最新文章
- CSS之布局(外边距的折叠)
- Sigma Function LightOJ - 1336[约数和定理]
- 吴恩达深度学习笔记(67)-迁移学习(Transfer learning)
- java学习笔记-set
- 内存位置访问无效_万字长文——java内存模型之volatile深入解读
- Topic交换器-编写生产者
- CSS每日学习笔记(1)
- Android开发笔记(一百一十三)测试工具
- hot编码 字符one_使用字符级RNN进行名字分类
- Sentaurus入门(3):sde
- 腾讯云多媒体文件处理总结
- java_SSD3_实验报告_面向对象——多态
- C语言鸡兔同笼应用题100道,C语言应用题。
- mysql binlog 查看pos点_如何寻找主库binlog和pos点
- Linux关闭防火墙命令
- Lipschitz条件
- Windows 环境下 Python 环境安装
- linux(安装在虚拟机)读取U盘
- BUGKU-成绩查询
- 人类面部表情数据集(12万张表情照片)
热门文章
- 我只是bug的搬运工之jsp 编辑预览时样式可以显示出来,而在浏览器浏览时无法显示出来!
- 那些让老板赞不绝口的可视化大屏,附模板和教程
- 5年数据总监主动辞职:那些没用可视化报表的人,后来都怎么样了
- Flex移动性能检查列表
- 饱和气压与温度的关系_气压和钓鱼的关系,冬天钓鱼还需要看气压吗?很多钓友都错了...
- 部队计算机考试题,2020军队文职计算机知识:计算机考试练习题(1)
- python items() 函数的使用(一分钟读懂)
- centos系统安装pycharm编辑器
- python调用数据库存储过程_python调用MySql存储过程
- 天下手游卡在获取服务器信息,天下手游召唤兽获取与洗练:新手必须知道的事情...