网站LOGO
云与雾Blog
页面加载中
1月18日
网站LOGO 云与雾Blog
分享你我所热爱的。
菜单
  • 云与雾Blog
    分享你我所热爱的。
    用户的头像
    首次访问
    上次留言
    累计留言
    我的等级
    我的角色
    打赏二维码
    打赏博主
    C语言笔记---(3)变量及常量篇
    点击复制本页信息
    微信扫一扫
    文章二维码
    文章图片 文章标题
    创建时间
  • 一 言
    确认删除此评论么? 确认
  • 本弹窗介绍内容来自,本网站不对其中内容负责。

    C语言笔记---(3)变量及常量篇

    小北 · 原创 ·
    👑C语言📓学习笔记 · 暂无标签
    共 3702 字 · 约 5 分钟 · 1923
    本文最后更新于2023年06月06日,已经过了591天没有更新,若内容或图片失效,请留言反馈

    一、变量

    1. 变量的概念

    变量就是可以变化的量,而每个变量都会有一个名字(标识符)。变量占据内存中一定的存储单元。使用变量之前必须先定义变量,要区分变量名变量值是两个不同的概念。

    现实生活中我们会找一个小箱子来存放物品,一来显得不那么凌乱,二来方便以后找到。计算机也是这个道理,我们需要先在内存中找一块区域,规定用它来存放整数,并起一个好记的名字,方便以后查找。这块区域就是“小箱子”,我们可以把整数放进去了。

    2. 变量名(标识符)命名规范

    变量名:变量名在 C 语言里面属于标识符(identifier),命名有严格的规范。

    • 只能由字母(包括大写和小写)、数字和下划线(_)组成。
    • 不能以数字开头。
    • 变量名不能包含除 _ 以外的任何特殊字符,如:%、# 、逗号、空格等
    • 长度不能超过63个字符。
    • 不可以使用32个保留关键字
    C 代码:
    // 无效变量名
    $zj j**p 2cat Hot-tab tax rate don't
    // 有效变量名
    Radiu salary AotuGun Knotted_Wool H301

    变量名严格区分大小写,start、Start、START是不同的变量名。


    3. 声明变量

    C语言的变量,必须先声明后使用。如果一个变量没有声明,就直接使用,会报错。
    每个变量都有自己的类型(type)。声明变量时,必须把变量的类型告诉编译器。

    C 代码:
    int one;

    此处声明了变量one,并且指定了他的类型为int(整数)
    如果在有多个同类型变量时,我们可以同时声明

    C 代码:
    int one, two;
    // 等于
    int one;
    int two;

    注意:

    • 声明变量的语句必须以分号结尾。
    • 一旦声明,变量的类型就不能在运行时修改。

    4. 变量赋值

    C语言会在变量声明时,就为它分配内存空间,但是不会清除内存里面原来的值。这导致声明变量以后,变量会是一个随机的值。所以,变量一定要赋值以后才能使用。

    赋值操作通过赋值运算符=完成。

    C 代码:
    // 声明了变量num
    int num;
    // 给变量num赋值888
    num = 888;
    变量的值应该与类型一致,不应该赋予不是同一个类型的值,比如num的类型是整数,就不应该赋值为小数。虽然 C语言会自动转换类型,但是应该避免赋值运算符两侧的类型不一致。
    C 代码:
    // 在声明变量的同时赋值给num
    int num =888;

    当拥有多个同类型变量时,可以在一行写多个

    C 代码:
    int x = 1, y = 2;

    赋值表达式有返回值,等于=右边的值。

    C 代码:
    int x, y;
    
    x = 1;
    y = (x = 2 * x);

    上面代码中,变量y的值就是赋值表达式(x = 2 * x)的返回值2
    由于赋值表达式有返回值,所以 C 语言可以写出多重赋值表达式。

    C 代码:
    int x, y, z, m, n;
    
    x = y = z = m = n = 3;

    上面的代码,一次为多个变量赋值。赋值运算符是从右到左执行,所以先为n赋值,然后依次为m、z、yx赋值。

    C 语言有左值(left value)和右值(right value)的概念。左值是可以放在赋值运算符左边的值,一般是变量;右值是可以放在赋值运算符右边的值,一般是一个具体的值。这是为了强调有些值不能放在赋值运算符的左边,比如x = 1是合法的表达式,但是1 = x就会报错。


    5. 变量的作用域

    作用域(scope)指的是变量生效的范围。C语言的变量作用域主要有两种:文件作用域(file scope)块作用域(block scope)。
    文件作用域(file scope)指的是,在源码文件顶层声明的变量,从声明的位置到文件结束都有效。

    C 代码:
    int a = 1;
    
    int main(void) {
    printf("%i\n", a);
    }

    上面示例中,变量a是在文件的顶层声明的,从声明位置开始的整个当前文件都是它的作用域,可以在这个范围的任何地方读取这个变量,比如函数main()内部就可以读取这个变量。

    块作用域(block scope)指的是由大括号{}组成的代码块,它形成一个单独的作用域。凡是在块作用域里面声明的变量,只在当前代码块有效,代码块外部不可见。

    C 代码:
    int a = 12;
    
    if (a == 12) {
      int b = 99;
      printf("%d %d\n", a, b);  // 12 99
    }
    
    printf("%d\n", a);  // 12
    printf("%d\n", b);  // 运行报错

    上面例子中,变量b是在if代码块里面声明的,所以对于大括号外面的代码,这个变量是不存在的,所以运行会报错。

    代码块可以嵌套,即代码块内部还有代码块,这时就形成了多层的块作用域。它的规则是:内层代码块可以使用外层声明的变量,但外层不可以使用内层声明的变量。如果内层的变量与外层同名,那么会在当前作用域覆盖外层变量。

    C 代码:
    {
      int i = 10;
    
      {
        int i = 20;
        printf("%d\n", i);  // 20
      }
    
      printf("%d\n", i);  // 10
    }

    上面示例中,内层和外层都有一个变量i,每个作用域都会优先使用当前作用域声明的i

    最常见的块作用域就是函数,函数内部声明的变量,对于函数外部是不可见的。for循环也是一个块作用域,循环变量只对循环体内部可见,外部是不可见的。

    C 代码:
    for (int i = 0; i < 10; i++)
      printf("%d\n", i);
    
    printf("%d\n", i); // 报错

    上面示例中,for循环省略了大括号,但依然是一个块作用域,在外部读取循环变量i,编译器就会报错。


    二、常量

    1. 常量的概念

    常量又称字面量,是固定值,在程序运行过程中,其值不能被改变称为:常量。如:6、3.14、‘a’、“abc123”等。

    常量 就像是常规的变量,只不过常量的值在定义后不能进行修改

    2. 常量的分类

    根据常量的取值对象,C语言将常量分为一下五种类型。

    1. 整型常量,例:16、0、-3等
    2. 实型常量,例:3.14159、-3.6等
    3. 字符常量,例:A5#
    4. 符号常量,例:#define PI 3.14159中的PI
    5. 字符串常量,例:ABC6estghj45+53

      常量的类型可以通过书写形式来辨别

    3.转义字符

    转义字符以\或者\x开头,以\开头表示后跟八进制形式的编码值,以\x开头表示后跟十六进制形式的编码值。对于转义字符来说,只能使用八进制或者十六进制。

    转义字符意义ASCII码值(十进制)
    \a响铃(BEL)当前位置移到前一列008
    \f换页(FF)将当前位置移到下页开头012
    \n换行(LF)将当前位置移到下一行开头010
    \r回车(CR)将当前位置移到本行开头013
    \t水平制表(HT)009
    \v垂直制表(VT)011
    \'单引号039
    \"双引号034
    \反斜杠092

    易错点:

    • 初始化与赋值的区别
    • 可以对一个变量进行多次赋值,但并不能进行多次初始化
    声明:本文由 小北(博主)原创,依据 CC-BY-NC-SA 4.0 许可协议 授权,转载请注明出处。

    还没有人喜爱这篇文章呢

    我要发表评论 我要发表评论
    博客logo 云与雾Blog 分享你我所热爱的。 51统计
    MOEICP 萌ICP备20228088号 ICP 晋ICP备2021016398号 又拍云 本站由又拍云提供CDN加速/云存储服务

    💻️ 小北 1月5日 在线

    🕛

    本站已运行 3 年 336 天 18 小时 22 分
    云与雾Blog. © 2021 ~ 2025.
    网站logo

    云与雾Blog 分享你我所热爱的。