• 常量、变量


    一、常量

    1、什么是常量

    常量,表示一些固定的数据

    2、常量的分类

    1> 整型常量(int)

    包括了所有的整数,比如6、27、109、256、-10、0、-289等

    2> 浮点型常量(floatdouble)

    浮点型常量分为double和float两种数据类型

      double:双精度浮点型,其实就是小数。比如5.43、-2.3、0.0等(注意,0.0也算是个小数)

      float:单精度浮点型,也是小数,比double的精确程度低,也就是说所能表示的小数位数比较少。为了跟double区分开来,float 型数据都是以f结尾的,比如5.43f、-2.3f、0.0f。需要注意的是,绝对不能有10f这样格式的,编译器会直接报错,只有小数才允许加上f。

    3> 字符常量(char)

      将一个数字(0~9)、英文字母(a~z、A~Z)或者 其他符号(+、-、!、?等)用单引号括起来,这样构成的就是字符常量。比如'6'、'a'、'F'、'+'、'$'等。

      注意:单引号只能括住1个字符,而且不能是中文字符,下面的写法是错误的:'abc'、'123456'、'男'

    4> 字符串常量

      将一个或者多个字符用双引号("")括起来,这样构成的就是字符串常量。比如"6"、"男"、"哇哈哈"、"abcd"、"my_car4",其实printf("Hello World");语句中的"Hello World"就是字符串常量。

    二、变量

    1、变量的命名规则:

      变量名只可以由字母、数字、下滑线组成,除此之外不能包含其它特殊字符(如:控制字符、特殊符号等);

      变量名必须以字母或者下划线开头;

      C语言中的保留字具有特殊意义,不能用作变量名称;

      C语言的变量名称区分大小写,例如:变量A与变量a是两个不同的变量。

    2、变量的作用域:

      每个变量都有其有效的使用范围,在有效范围内,可以对变量进行访问,而超过了变量声明的有效范围,该变量就无法访问了。

      变量按照其作用域划分:

    • 局部变量:只能在函数内(以函数{ }括起的范围内)或者语句块内(条件、循环{ }括起的范围内)使用的变量,一旦超出了其定义的花括号范围即不可访问。
    1 void func()
    2 {
    3 float f_val;     //局部变量f_val,在函数func()内部任何位置始终有效
    4 5 }
    • 全局变量:可以在整个程序任意位置使用的变量。
    1 float f_val;     //全局变量f_val,在程序文件中任何函数中都可以使用
    2 
    3 int main(int argc, const char * argv[]) { … }
    4 
    5 void func() { … }
    • 不管是全局变量、局部变量,只要在其声明范围内的各个位置都可以访问使用;一旦超过其声明范围,到更大的作用域范围中,就不可访问使用了。

      注释:局部变量在内存中存储与堆栈中,所有static关键字修饰过的变量存于普通内存中。Static修饰全局变量,此变量被私有化,只在其所在的源文件中可用;static修饰过的局部变量仍是局部变量,只是生命周期变长了;static修饰过的函数,此函数被私有化,只在其所在的源文件中可用。

    3、变量的存储类型:

      变量的存储方式分为动态、静态;动态存储变量时而存在时而消失,而静态存储变量在其生存期作用域范围内一直存在。

    • auto存储类型:自动变量,局部变量缺省(默认)情况下是此类型变量;
    • register存储类型:寄存器变量,存放于CPU寄存器中,对于循环次数较多的情况下,可以将控制循环次数的计数器变量定义为此类型变量;
    • static存储类型:静态变量,只要程序运行时,在变量的作用范围内就可以一直访问使用该变量;
    • extern存储类型:外部变量,作用域是整个应用程序,可以在多个源文件中使用该变量;

      注意:静态局部变量的作用域以及生存期:⬇️

    • 静态局部变量的作用域是其声明的局部范围内;
    • 静态局部变量的生存期是整个应用程序运行期间;
    • 虽然作用域为局部范围内,超出了作用域就不可访问了,但是其生存期是整个应用程序运行期间,只要进入静态局部变量的作用域,该变量又可以被访问了,而且其值保留前次被使用的结果;

      注释register 只修饰局部变量(只能是int类型、char类型、指针类型);不能修饰全局变量和static修饰过的局部变量。

                  auto是专门修饰局部变量的。

                  extern是修饰全局变量的,或在函数中做引用外部全局变量使用。

  • 相关阅读:
    UML箭头含义整理
    协变返回类型
    Thymeleaf取出model中的数据
    宝塔面板中的mysql查看密码问题
    宝塔面板如何登录
    mysql查看数据库、表的基本语句
    springboot拦截器实例
    Thymeleaf中的fragments学习
    食物链
    银河英雄传说
  • 原文地址:https://www.cnblogs.com/CJDog/p/4979558.html
Copyright © 2020-2023  润新知