如何给结构体嵌套结构体成员赋值

结构体入门赋值

#include<stdio.h>

struct student {
	int a;
	float f;
	int b;
	double c;
}student1;
struct teacher
{
	int a;
	int b;
	double c;
	struct student f;//这里是结构体成员
}teacher1;
int main()
{
	//teacher1.f=123.456;//这样是错的

	teacher1.f.f = 123.456;
	printf("%f\n", teacher1.f.f);

	teacher1.a = student1.a=2;//结构体赋值

	teacher1.a++;//结构体自增

	printf("%d\n", teacher1.a);
	
return 0;
}

结构体数组

struct student
{
	int id;
	int score;
	char sex[10];
}student1[3] = { 01,99,"男" };

int main()
{
	int i = 0;
	
	printf("%d,%d,%s", student1[i].id,student1[i].score,student1[i].sex);
	return 0;
}

  • 7
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C语言之基础 1) C语言之简介 2) C语言之搭建开发环境 3) C语言之第一个简单程序的结构详解 4) C语言之书写规范和注释 5) C语言之数据类型 字符串和格式化输入输出 6) C语言之使用字符串 7) C语言之格式化输出 8) C语言之格式化输入 9) C语言之格式化输入输出整理 10) C语言之基本运算符 11) C语言之其他运算符 12) C语言之表达式和语句 循环语句 13) C语言之while循环语句 14) C语言之do-while循环语句 15) C语言之for循环语句 16) C语言之使用关系运算符和表达式 17) C语言之赋值运算+=、-=、*=、/=、%= 18) C语言之循环嵌套 分支跳转 19) C语言之分支和跳转 if 20) C语言之分支和跳转 if-else 21) C语言之条件运算符 ?: 22) C语言之循环辅助手段:continue 和 break 23) C语言之分支和跳转 switch和break 24) C语言之分支和跳转 goto语句 25) C语言之字符输入/输出和输入确认 指针 26) C语言之初识指针 27) C语言之指针的简单用法 28) C语言之字符串指针详解 数组 29) C语言之定义数组 30) C语言之一维数组的使用 31) C语言之二维数组和多维数组 32) C语言之指向数组的指针 33) C语言之保护数组内容const的使用 34) C语言之指向多维数组的指针 函数 35) C语言之函数的定义和调用 36) C语言之定义带参数的函数 37) C语言之函数之形参和实参 38) C语言之函数之返回值和函数类型 39) C语言之指针做函数参数 40) C语言之数组做函数参数 41)c语言之递归 字符串和字符串函数 42)c语言之字符串I/O 43) C语言之字符串输入/输出 44) C语言之字符串处理函数 文件操作 45) C语言之文件是什么 46) C语言之用fopen() 打开文件,关闭文件 fclose() 47) C语言之getc() 和 putc 读写文件 48) C语言之文件结尾 49) C语言之fgets() 和 fputs() 50) C语言之文件内部指针 51) C语言之rewind() 52) C语言之随机存取 fseek() 和 ftell() 函数 53) C语言之fsetpos和fgetpos 54) C语言之fread() 和 fwrite() 函数 结构体和其他数据形式 55) C语言之结构体的定义和初始化 56) C语言之访问结构体成员 57) C语言之结构数组 58) C语言之结构体指针 59) C语言之结构体做函数参数 60) C语言之把结构体保存到文件 已更新至此 61)C语言之联合简介 62)C语言之枚举类型 63)C语言之函数和指针 位操作 64) C语言之二进制、位和字节 65)C语言之位运算 66)C语言之打开位 67) C语言之转置位及查看位 68) C语言之左移右移(大结局)
“新概念C语言”突破了以往任何一种语言教材的旧的模式,将教学内容分为入门篇和提高篇两个篇章。在入门篇中只引进程序设计必要的语法现象,达到快速入门。激发兴趣的目的。在入门篇和提高篇之间插一个强化上机实验周,巩固学习内容。在提高篇中完成完整的语法、算法、程序设计思想等教学目的的学习任务。由于学生对语言已具有了初步的了解并掌握了最基本的语法和程序设计思想,能设计较简单的程序,所以在提高篇的学习中,不论对灵活语法的学习和掌握,还是对程序设计思想的掌握都更加容易,从而可以较容易达到教学目标。 第一部分 入门篇 1 第1章 C语言的产生及其工作流程 3 1.1 C语言的产生 3 1.2 程序和程序设计 3 1.2.1 C程序 3 1.2.2 程序设计 4 习题 4 第2章 C程序设计的初步知识 5 2.1 简单C程序的构成和格式 5 2.2 常量、变量和标识符 6 2.2.1 标识符 6 2.2.2 常量 7 2.2.3 用定义一个符号名的方法来代表一个常量 7 2.2.4 变量 8 2.3 整型数据 8 2.3.1 整型常量 8 2.3.2 整型变量 8 2.4 实型数据 9 2.4.1 实型常量 9 2.4.2 实型变量 9 2.5 字符型数据 10 2.5.1 字符常量 10 2.5.2 字符串常量 11 2.5.3 字符变量 11 2.6 算术表达式 11 2.6.1 基本的算术运算符 11 2.6.2 运算符的优先级、结合性和算术表达式 12 2.6.3 强制类型转换表达式 13 2.7 赋值表达式 13 2.7.1 赋值运算符和赋值表达式 13 2.7.2 赋值运算中的类型转换 14 习题 15 第3章 顺序结构程序 16 3.1 复合语句和空语句 16 3.1.1 复合语句 16 3.1.2 空语句 16 3.2 程序举例 16 习题 17 第4章 选择结构 19 4.1 关系运算和逻辑运算 19 4.1.1 C语言中的逻辑值 19 4.1.2 关系运算符和关系表达式 19 4.1.3 逻辑运算符和逻辑表达式 20 4.2 if语句和用if语句构成的选择结构 21 习题 22 第5章 循环结构 25 5.1 for语句和用for语句构成的循环结构 25 5.1.1 for语句构成的循环结构 25 5.1.2 for循环的执行过程 25 5.1.3 有关for语句的说明 25 5.2 循环结构的嵌套 27 习题 28 第6章 函数 30 6.1 函数的定义和返回值 30 6.1.1 函数定义的语法 30 6.1.2 函数的返回值 30 6.2 函数的调用 32 6.2.1 函数的调用方式 32 6.2.2 函数调用时的语法要求 32 6.3 函数的说明 33 6.3.1 函数说明的形式 33 6.3.2 函数说明的位置 34 6.4 调用函数和被调用函数之间的数据传递 34 6.5 库函数 36 6.6 数据输入输出及常用库函数 37 6.6.1 printf函数(格式输出函数) 37 6.6.2 scanf函数(格式输入函数) 39 6.6.3 调用putchar和getchar函数输出和输入字符 40 6.7 程序举例 41 习题 43 第7章 数组 45 7.1 一维数组的定义和一维数组元素的引用 45 7.1.1 一维数组的定义 45 7.1.2 一维数组元素的引用 46 7.1.3 一维数组的初始化 46 7.1.4 一维数组的定义和数组元素引用举例 47 7.2 函数之间对一维数组和数组元素的引用 47 7.2.1 数组元素做实参 47 7.2.2 数组名做实参 49 7.3 一维数组应用举例 50 7.4 字符数组 53 7.4.1 字符数组的定义 53 7.4.2 字符数组的初始化 54 7.4.3 字符数组的引用 54 7.4.4 字符串与字符串结束标志 55 7.4.5 字符数组的输入输出 56 7.4.6 字符串处理函数 58 7.4.7 字符数组应用举例 60 习题 61 第8章 文件 63 8.1 C语言文件的概念 63 8.2 打开文件 64 8.3 关闭文件 65 8.4 调用getc(fgetc)和putc(fputc)等常用函数进行输入和输出 65 8.5 判断文件结束函数feof 68 习题 69 第二部分 提高篇 71 第9章 算法 73 9.1 算法 73 9.2 结构化程序设计和模块化结构 74 9.2.1 结
C语言中的结构体可以包含其他结构体作为其成员,这种结构体嵌套结构体的形式能够更灵活地组织和管理数据。对于结构体嵌套结构体,可以使用指针来访问和操作。 首先,我们需要定义两个结构体,一个作为外层结构体,另一个作为内层结构体。接着,我们可以在外层结构体中声明内层结构体的指针作为成员。这样,外层结构体成员就是一个指向内层结构体的指针。 为了方便理解,下面我们举一个例子来说明结构体嵌套结构体指针的用法。 ```c #include <stdio.h> // 内层结构体 typedef struct { int x; int y; } Point; // 外层结构体 typedef struct { int id; Point* point; } Shape; int main() { Point p1 = {1, 2}; Point p2 = {3, 4}; Shape s1 = {1, &p1}; Shape s2 = {2, &p2}; printf("s1.id = %d\n", s1.id); printf("s1.point->x = %d\n", s1.point->x); printf("s1.point->y = %d\n", s1.point->y); printf("s2.id = %d\n", s2.id); printf("s2.point->x = %d\n", s2.point->x); printf("s2.point->y = %d\n", s2.point->y); return 0; } ``` 在上面的例子中,我们定义了一个内层结构体`Point`表示二维坐标点,另外定义了一个外层结构体`Shape`表示图形,其中成员`point`是指向`Point`结构体的指针。 在`main`函数中,我们分别创建两个内层结构体对象`p1`和`p2`,并设置其属性。 然后,我们创建两个外层结构体对象`s1`和`s2`,并将内层结构体对象的指针分别赋值给它们的`point`成员。 最后,我们通过外层结构体对象访问内层结构体对象的属性,通过指针的方式实现了结构体嵌套结构体的访问。 运行程序后,输出结果如下: ``` s1.id = 1 s1.point->x = 1 s1.point->y = 2 s2.id = 2 s2.point->x = 3 s2.point->y = 4 ``` 结构体嵌套结构体指针能够帮助我们更有效地组织和操作数据,提高代码的可读性和可维护性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值