变量意味着它存储的数据可以修改;那么,所谓的常量变量(缩写为常量变量)就意味着它存储的数据值不能修改。此外,常数的值在定义常数时被初始化。
在C语言中,const关键字用于定义常量,格式如下:
Const数据类型变量名=初始值;
或者
数据类型常量变量名=初始值;
在定义的格式中,数据类型和const关键字的位置可以互换,但是我们习惯于使用第一种格式,即在数据类型之后定义的变量名。以下是一个测试示例:
运行程序的结果如下:
此时定义变量A为常量,在定义时初始化,所以打印输出中常量A的值为189。定义常数后,不能修改其值。以下是一个测试示例:
汇编结果如下:
可以看到,编译提示错了!提示变量a为只读类型,只读,不能修改其数据。因此,我们知道const修改的变量是一个常量类型的变量,在定义变量时必须对其进行初始化和赋值。定义变量后,不能修改变量值。
这里只介绍了常量,可以用const关键字定义常量。事实上,const关键字有很多功能,尤其是与指针结合使用时,可以保护指针的数据。您也可以定义常量类型的参数和函数。后面介绍指针和函数的时候,结合const关键字来解释。
00-1010在本章中,我们研究了变量的定义和使用。深入讨论了有符号类型变量和无符号类型变量的使用。
数值,如255,存储在字符型变量和无符号字符型变量中,代表不同的数值。这就是有符号数和无符号数的区别。这个知识点需要深入掌握。如果第一次看不懂,结合作者提供的测试实例,多思考,调试,总结。
2010年作者辞职找工作时,应聘了一家大型网络通信公司,开发企业级路由器和交换机。这种网络通信设备使用的是Linux系统,所以需要Linux C编程。
其中,我在面试的时候遇到了这样一个问题:路由器的MAC地址需要格式化成字符串显示,如下图所示:
是将一个MAC地址值转换成这种格式进行显示。然后,给定的代码如下:
char MAC _ val[6];
char MAC _ str[32];
snprintf(mac_str,32,' % x :% x :% x :% x :% x :% x ',
mac_val[0],mac_val[1],mac_val[2],
mac_val[3],mac_val[4],MAC _ val[5]);
那么,这样一段代码有什么问题呢?
作者当时采访时,指出了一些问题。当时面试官提到这需要详细的C语言知识,很多面试官都答不上来。
所以,扎实的C语言基础非常重要!
在上面第《3 有符号数的符号位扩展》章中,我们提出了有符号数的“符号位”问题。
因为mac_val[]数组是char类型的,所以它是带符号的数字类型。然后,当数组元素大于或等于128时,第8位为1,此时符号位为1。然后,snprintf()函数使用%x来格式化数据,扩展符号位,并用ffffff字符填充它,因此它得到了错误的字符串。mac_val[]数组应该定义为无符号字符类型,可以解决这个问题。
在这一章中,我们还研究了符号常数的定义,我们一般称之为:宏定义。这个知识点很有用。在开发大型项目时,我们都需要定义大量的宏来使用。
所以这一章的知识点非常重要,需要全面掌握。
作者讲解的知识点都是结合十几年的工作和开发经验,传授在实际项目开发中使用的技术。所以讲解的知识点更深。如果第一遍看不懂,就多看几遍。
只有完全掌握了这些技术,才能轻松解决工作中的问题。
读者应该仔细分析和掌握每一个知识点,然后总结自己对知识点的理解。你总结出来的知识是可以深入理解的,是你掌握的知识。