类型与作用域(思维导图)(7.22更新)

本文详细探讨了C语言中的整型、实型、字符和符号常量,区分了全局变量与局部变量,以及静态存储与动态存储的区别。强调了合理使用全局变量的优势与局限,以及局部变量的作用和内存分配特点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据类型(变量)

        

 整型常量

        有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的局部变量)、函数调用的现场现场保护和返回值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值