数据类型(变量)
整型常量
有3种表示方式:十进制整型,八进制整型,十六进制整型。
八进制整型-由数字0开头-如034,065,057;
十进制整型-如同数学中的数字-如123,-78,90;
十六进制整型-由0X或0x开头-如0x23,0Xff,0xac;
实型常量
实型数只用在十进制数中,并有单精度和双精度之分。其表示形式分为一般表示形式和指数表示形式。
一般形式的实数为十进制小数形式。例如,3.14,.999,-3.14159,834.,-0.666等。
指数形式的实数由尾数e(或E)和指数三部分组成。例如0.3e05(0.3*10^5),6.89E-5(6.89*10^-5),9.99e+16(9.99*10^16),e(或E)前为尾数,e(或E)是指数的底数,e(或E)后边为指数。
需要注意的是字母e(或E)之前必须有数字,且e(或E)后面的指数必须为整型。
字符常量
字符常量是用单引号括起来的一个字符,其中单引号为定界符。如'a','A','$'等等。
字符常量既可以表示打印字符,也可以表示某些不可打印字符(如回车符,换行符和响铃符等等),不可打印的字符只能通过转义字符来表示。
符号常量
在C语言中,可以用符号代替常量,该符号被称为符号常量。定义符号常量用预处理命令#define定义(宏定义)。符号常量一般用大写字母以区别于其他标识符。符号常量要先定义后使用。
变量按其作用域分,可分为局部变量和全局变量
全局变量
在程序执行的全程有效的变量称为全局变量,全局变量可以为本文件中其它函数所共用,它的有效范围从定义变量的位置开始到本源文件结束。
如上面这个程序,想o要打印num_1,但是系统提示num_01的变量没有定义,程序是从上往下走的,所有要把全局变量定义在函数体前。
全局变量的优点:
全局变量内存地址固定,读写效率比较高。任何 一个函数或线程都可以读写全局变量,使得函数之间变量的同步变得更为简单。不需要重复定义变量了,提高了效率。
全局变量的缺点:
内存开销大,全局变量生命周期长,系统需要为其分配内存,一直到程序结束, 才会释放内存。建议不要过多的使用全局变量,一旦定义了全局变量,在程序的任何地方都可以修改,不利于系统的维护,别人有可能不知道这个调用的是哪的变量。
局部变量
在一个函数内部定义的变量是局部变量,它只在本函数范围内有效。
main函数中定义的变量也是局部变量,main函数与其他函数地位是相等的。(函数之间是平行的,只有调用关系)在不同的函数体中可以使用相同的变量名,它们表示不同的数据和地址,是不相干的。
全局变量与局部变量在内存中的区别
①全局变量保存在全局存储区中,占用静态存储单元,在程序执行结束后才会被释放。
②局部变量保存在栈中,只有在所有函数被调用时才动态的为变量分配存储单元。
变量按其存在时间,可分为静态存储和动态存储
静态存储:程序在运行期间分配固定的存储方式。
静态存储区:全局变量和静态变量的存储区域,静态变量其实更像是一个全局变量,它的值会一直保留在内存中,不因作用域而销毁。如static声明静态变量。
动态存储 :程序在运行期间根据需要动态的分配存储空间。
动态存储区:如函数的形式参数,在函数定义时并不给形参分配存储单元,只是在函数被调用时,才予以分配, 调用函数完毕立即释放。自动变量(没有加static的局部变量)、函数调用的现场现场保护和返回值。