多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

《C++程序设计》阅读笔记【8-结构体】

《C++程序设计》阅读笔记【8-结构体】 个人主页godspeed_lucip 系列专栏《C程序设计》阅读笔记本文对应的PDF源文件请关注微信公众号程序员刘同学回复C程序设计获取下载链接。结构体概述基本使用为结构体赋值结构体和指针结构体的嵌套2 过程化语句2.1 switch2.1.1 运行流程3 总结结构体概述声明一个结构并不分配内存。只有定义了一个结构体变量时才会分配内存。结构体中的成员默认都是public的。C中的结构体可以包含成员函数且可以和类一样设置权限C中的结构体只可以有成员基本使用为结构体赋值用数组给另外一个数组进行赋值是行不通的。因为数组只是代表空间无法对数组空间地址进行批量操作。例如inta[3]{1,2,3};intb[3]{4,5,6};ab;//error但是结构体大小固定是可以使用另外一个结构体进行赋值的。两个不同结构名的变量是不允许相互赋值的即使二者包含同样的成员结构体和指针与数组不同结构体名不是指针。但是它是有地址的使用取值操作符就可以得到。这个地址就是结构的第一个成员的地址。可以将结构变量的地址赋给结构指针结构指针通过箭头操作符-(也是一种结构成员操作符)来访问结构成员。结构体的嵌套结构体中可以包含其他结构。但是结构成员不可以是自身的结构变量但是可以用自身结构指针作为成员。解释定义结构体时它自身还处于类型描述中不能用尚无成型的结构来描述其成员。但是结构体指针的大小是确定的。例如2 过程化语句2.1 switch2.1.1 运行流程求值首先switch后的表达式被求值。这个表达式的结果会被用于决定执行哪个case分支。匹配switch语句中的每个case分支都包含一个常量表达式或字面值。程序会将switch后的表达式的值与每个case分支的常量进行比较直到找到匹配的分支或到达default分支。如果找到匹配的case程序将跳转到该分支执行相应的代码。switch(expression){caseconstant1:// Code for case constant1break;caseconstant2:// Code for case constant2break;// ...default:// Code for default case}执行代码块一旦找到匹配的case程序将开始执行与该case相关联的代码块。如果没有匹配的case且存在default分支程序将执行default分支的代码块。跳出switch一旦执行了匹配的case或default分支的代码块程序将跳出整个switch语句前提是遇到break语句或者switch代码块中的代码都被执行完了继续执行switch语句之后的代码。在switch语句中使用break语句可以强制跳出switch语句防止继续执行后续的case分支。如果没有break语句程序会继续执行下一个case分支直到遇到break、return、throw或者到达switch语句的末尾。需要注意的是switch语句中的每个case常量必须是整型、字符型或枚举型。这是因为switch语句的实现通常基于跳转表而这些类型是离散的适合用于高效的跳转表实现。float实际上是连续的赋值float a0.1; float b0.1;但是a和b是有可能不相等的TIP1为什么不可以用float表示switch的表达式相等的两个浮点数可能在实际表示上有微小的差异。主要原因精度限制浮点数在计算机中以有限的二进制位数表示。在进行浮点数计算时有些实数值无法精确表示因此计算结果可能会略有误差。比如1.23就只能用无限的二进制数去表示舍入误差浮点数运算涉及舍入因为计算机的位数是有限的。这意味着某些小数可能被截断或舍入导致结果的微小差异。数值不可数性许多实数值特别是无理数无法被有限的浮点数表示。例如π圆周率和e自然对数的底数等是无理数它们只能以近似的方式表示。TIP2default语句是可以不要的当default不出现时则当表达式的值与所有常量表达式都不相等时就会越过switch语句3 总结C犹如编程的交响乐 在代码的海洋中奏响和谐的旋律。它是创造者的笔雕刻着无尽可能是思想的翅膀让梦想飞翔的天空。无拘无束灵活多变。C是程序员心中的宝藏永不凋零的花朵。渴望挑战C的学习路径和掌握进阶技术不妨点击下方链接一同探讨更多C的奇迹吧。我们推出了引领趋势的C专栏《C程序设计》阅读笔记旨在深度探索C的实际应用和创新。
返回列表