c语言有结构体的200行代码,C语言——结构体(示例代码)
六、结构体的使用
1.一般对结构体变量的操作是以成员为单位进行的,引用的一般形式为:结构体变量名.成员名
1 struct Student {
2 char *name;
3 int age;
4 };
5
6 struct Student stu;
7
8 // 访问stu的age成员
9 stu.age = 27;
第9行对结构体的age成员进行了赋值。"."称为成员运算符,它在所有运算符中优先级最高
2.如果某个成员也是结构体变量,可以连续使用成员运算符"."访问最低一级成员
1 struct Date {
2 int year;
3 int month;
4 int day;
5 };
6
7 struct Student {
8 char *name;
9 struct Date birthday;
10 };
11
12 struct Student stu;
13
14 stu.birthday.year = 1986;
15 stu.birthday.month = 9;
16 stu.birthday.day = 10;
注意第14行以后的代码
3.相同类型的结构体变量之间可以进行整体赋值
1 struct Student {
2 char *name;
3 int age;
4 };
5
6 struct Student stu1 = {"MJ", 27};
7
8 // 将stu1直接赋值给stu2
9 struct Student stu2 = stu1;
10
11 printf("age is %d", stu2.age);
注意第9行。输出结果为:
七、结构体数组
1.定义
跟结构体变量一样,结构体数组也有3种定义方式
struct Student {
char *name;
int age;
};
struct Student stu[5]; //定义1
struct Student {
char *name;
int age;
} stu[5]; //定义2
struct {
char *name;
int age;
} stu[5]; //定义3
上面3种方式,都是定义了一个变量名为stu的结构体数组,数组元素个数是5
2.初始化
struct {
char *name;
int age;
} stu[2] = { {"MJ", 27}, {"JJ", 30} };
也可以用数组下标访问每一个结构体元素,跟普通数组的用法是一样的
八、结构体作为函数参数
将结构体变量作为函数参数进行传递时,其实传递的是全部成员的值,也就是将实参中成员的值一一赋值给对应的形参成员。因此,形参的改变不会影响到实参。
1 #include
2
3 // 定义一个结构体
4 struct Student {
5 int age;
6 };
7
8 void test(struct Student stu) {
9 printf("修改前的形参:%d \n", stu.age);
10 // 修改实参中的age
11 stu.age = 10;
12
13 printf("修改后的形参:%d \n", stu.age);
14 }
15
16 int main(int argc, const char * argv[]) {
17
18 struct Student stu = {30};
19 printf("修改前的实参:%d \n", stu.age);
20
21 // 调用test函数
22 test(stu);
23
24
25 printf("修改后的实参:%d \n", stu.age);
26 return 0;
27 }
* 首先在第4行定义了一个结构体类型Student
* 在第18行定义了一个结构体变量stu,并在第22行将其作为实参传入到test函数
输出结果为:
,形参是改变了,但是实参一直没有变过
九、指向结构体的指针
* 每个结构体变量都有自己的存储空间和地址,因此指针也可以指向结构体变量
* 结构体指针变量的定义形式:struct 结构体名称 *指针变量名
* 有了指向结构体的指针,那么就有3种访问结构体成员的方式
结构体变量名.成员名
(*指针变量名).成员名
指针变量名->成员名
1 #include
2
3 int main(int argc, const char * argv[]) {
4 // 定义一个结构体类型
5 struct Student {
6 char *name;
7 int age;
8 };
9
10 // 定义一个结构体变量
11 struct Student stu = {"MJ", 27};
12
13 // 定义一个指向结构体的指针变量
14 struct Student *p;
15
16 // 指向结构体变量stu
17 p = &stu;
18
19 /*
20 这时候可以用3种方式访问结构体的成员
21 */
22 // 方式1:结构体变量名.成员名
23 printf("name=%s, age = %d \n", stu.name, stu.age);
24
25 // 方式2:(*指针变量名).成员名
26 printf("name=%s, age = %d \n", (*p).name, (*p).age);
27
28 // 方式3:指针变量名->成员名
29 printf("name=%s, age = %d \n", p->name, p->age);
30
31 return 0;
32 }
c语言有结构体的200行代码,C语言——结构体(示例代码)相关推荐
- php解析命令行参数选项,PHP 命令行参数解析工具类的示例代码
PHP 命令行参数解析工具类的示例代码 /** * 命令行参数解析工具类 * @author guolinchao */ class CommandLine { // 临时记录短选项的选项值 priv ...
- python抠图精确到发丝_Python用5行代码实现批量抠图的示例代码
前言 对于会PhotoShop的人来说,抠图是非常简单的操作了,有时候几秒钟就能扣好一张图.不过一些比较复杂的图,有时候还是要画点时间的,今天就给大家带了一个非常快速简单的办法,用Python来批量抠 ...
- python抠图_Python用5行代码实现批量抠图的示例代码
前言 对于会PhotoShop的人来说,抠图是非常简单的操作了,有时候几秒钟就能扣好一张图.不过一些比较复杂的图,有时候还是要画点时间的,今天就给大家带了一个非常快速简单的办法,用Python来批量抠 ...
- Linux下编译build的命令,Linux命令行下编译Android NDK的示例代码
这几天琢磨写一个Android的Runtime用来加速HTML5 Canvas,让GameBuilder+CanTK 不但开发速度快,运行速度也能接近原生应用.所以花了点时间研究Android NDK ...
- ios c语言调用oc方法,ios开发之OC基础-类和对象(示例代码)
本系列的文章主要来自于个人在学习前锋教育-欧阳坚老师的iOS开发教程之OC语言教学视频所做的笔记,边看视频,边记录课程知识点.建议大家先过一遍视频,在看视频的过程中记录知识点关键字,把把握重点,然后再 ...
- python绘制像素图_Python用61行代码实现图片像素化的示例代码
起因 看到网上的像素图片,感觉蛮有趣的,就打算用python一些PIL类库写一个. 实现思路 把一张图片分成多个块,每个块的颜色都等于这个色块中颜色最多的颜色,如下图. 这个图取2×2的像素为块的大小 ...
- c语言fmod英文全称,C语言fmod()函数:对浮点数取模(求余)(示例代码)
头文件:#include fmod() 用来对浮点数进行取模(求余),其原型为: double fmod (double x); 设返回值为 ret,那么 x = n * y + ret,其中 n 是 ...
- c语言strsep,C/C++ 字符串分割: strtok 与 strsep 函数说明(示例代码)
函数原型: char *strtok(char *s, const char *delim); char *strsep(char **s, const char *delim); 功能:strtok ...
- r语言error in match.fun(fun) :_Go语言200行写区块链源代码分析
Github上有一个Repo,是一个使用Go语言(golang),不到200行代码写的区块链源代码,准确的说是174行.原作者起了个名字是 Code your own blockchain in le ...
- go语言:200行代码做udp rtp转发并发分布服务器
使用go做服务器 最近写服务器使用c++多了以后,java和node逐渐被放到一边,最后又做了一个决定,使用go来做服务器,将会使用200行代码不到来做这个并发和分布式服务器,为什么? go语言的优势 ...
最新文章
- 使用OUYA第一次启动OUYA
- 单例模式(Singleton)
- 典型的简单权限分配系统方法介绍
- php时间戳防盗链,金山云-文档中心-设置时间戳+共享密钥防盗链
- 黑马程序员 Java 加强
- RK3288_Android7.1在HAL层audio音频通路小结
- debian解决中文乱码,安装chinese font
- Java设计模式------单例模式
- java新建json 数组_Java创建JSON对象
- 算法之数学--常用数学公式,规律神器OEIS 2021-03-09
- R语言绘图的中文字体处理
- [Codeforces1148C]Crazy Diamond——构造
- 性能优化: 资源合并与压缩 -- 压缩(前端开发过程中 JavaScript、HTML、CSS 文件的压缩)
- Ruby ERB模板注入检测
- FOC——10.11.IR2106半桥预驱电路
- LIO-SAM imuPreintegration
- Esp8266 进阶之路36【外设篇】乐鑫esp8266芯片SDK编程驱动时间芯片 ds1302,同步网络时间到本地,再也不怕掉电断网也可以同步时间了!(附带Demo)
- 简单电话簿管理系统(C语言)
- dotnetbar-SuperTabControl禁止调整顺序
- CUDA编程:矩阵乘运算从CPU到GPU
热门文章
- delphi 中文转 ascii编码_【转】Python 中文编码
- flink写入 mysql_基于 Binlog + Flink 实现多表数据同构/异构方案
- Dart之字符串(String)的相关方法总结
- 一个网卡设备配置两个不同网段的IP地址
- shell编程的for和while循环
- 神经网络-GoogleNet的发展,介绍,贡献
- EF并非我们想象的那么智能
- Linux安装Oracle,卡在60%处的解决方法
- web安全day43:网络扫描和Nmap的使用
- 【php更换数据库为orcle】phpstudy+orcle