2023-2024(1)程序设计基础C期末应试复习大纲

运算符和表达式理解

  1. 递增和递减运算符(++, --)

    • 这两个运算符可以作为前缀或后缀使用,与其使用位置相关。例如,++x 表示先将 x 的值增加1,然后返回增加后的值;而 x++ 则表示先返回 x 的值,然后再将 x 的值增加1。

      int num = 'a';
      cout<<"97:"<<num++<<endl;
      cout<<"98:"<<num<<endl;
      cout<<"99:"<<++num<<endl;
      cout<<"99:"<<num<<endl;
  2. sizeof运算符

    • sizeof 运算符用于获取数据类型或变量的大小(以字节为单位)。

      • 例如:无论整数的值是多少,sizeof 运算符返回的结果都是固定的,取决于数据类型的大小。

      • 例如:sizeof 运算符返回的是数组或数据类型在内存中所占的字节数,而不是字符串的长度。

      char ch = 'a';
      char lis[] = {1, 2, 3};
      cout<<"4:"<<sizeof(int)<<endl;
      cout<<"1:"<<sizeof(char)<<endl;
      cout<<"5:"<<sizeof("abcd")<<endl;
      cout<<"4:"<<sizeof(123456)<<endl;
      cout<<"3:"<<sizeof(lis)<<endl;                      
  3. 逻辑运算的短路:

    • 逻辑运算符包括逻辑与(&&)、逻辑或(||)和逻辑非(!)。这些运算符在进行逻辑运算时具有短路特性。
    • 逻辑与(&&):当第一个表达式为假时,不会再计算第二个表达式,直接返回假。
    • 逻辑或(||):当第一个表达式为真时,不会再计算第二个表达式,直接返回真。

字符串和字符数组(C风格的字符串)

  1. 输入输出

    • cin

      • 不能读入分隔符:空格(space)、制表符(tab)、换行(enter)
    • cin.getline()

      • 默认通过换行符来确定输入结束(也可指定其他符号),不读入enter,也不保留。但可以读入space、tab
    char s[100];
    cin.getline(s, 7, '*'); // 第三个参数可以没有
    cout<<s<<endl;
    • 输入:abcdefgh 输出:abcdef

    • 输入:abcd*efgh 输出:abcd

    • 输入:a bcdef*gh 输出:a bcde

  2. 常用字符串处理函数(使用<cstring>库)

    • 求串字面长:strlen()

    • 串比较:strcmp()

    • 串拷贝:strcpy() / strcpy_s()

    • 串连接: strcat() / strcat_s()

      char s1[] = "abcd";
      char s2[] = "acde";
      char s3[] = "abcd";
      cout<<"4:"<<strlen(s1)<<endl;
      cout<<"-1:"<<strcmp(s1, s2)<<endl; // 若s1>s2输出1
      cout<<"acde:"<<strcpy(s1, s2)<<endl; // s2复制给s1
      cout<<"abcdacde:"<<strcat(s3, s2)<<endl;

变量的作用域、静态变量概念

  1. 全局变量和局部变量

    • 全局变量:在所有函数之外定义的变量称为全局变量,由编译器建立,并且初始化为0。

    • 局部变量:在某个函数之内定义的变量称为局部变量,初始是一个随机数。

    • 在全局变量的作用域内定义与其同名的局部变量,则在该局部变量的作用域内,对应的全局变量不起作用(被屏蔽

  2. 变量的存储类型

    • 动态存储类型

      • auto:自动的(用于局部变量)缺省

      • register:寄存器的(用于局部变量)

        目的:为了提高执行效率

        注意:函数内使用频繁局部变量或形式参数或数组的下标变量可定义为寄存器变量,而静态局部变量全局变量不能定义为寄存器变量

    • 静态存储类型

      • static:静态的(用于全局变量、局部变量或函数

        1. 静态局部变量

          • 值存放在全局数据区,直到程序运行结束才释放;

          • 编译时只赋初值一次,若没有给出初值,则自动赋值为0或空;

            (静态局部变量具有静态存储期,即它们的生命周期超过了函数的执行时间。这意味着无论函数被调用多少次,静态局部变量都只会被初始化一次,并且在函数调用之间保持其值)

          • 只能在定义该变量的函数或局部块内使用

        2. 静态全局变量

          • 值存放在全局数据区,直到程序运行结束才释放;

          • 编译时赋初值一次,若没有给出初值,则自动赋值为0或空;

          • 只能在定义该变量的文件内使用,而不能在其它文件中被引用

        3. 静态函数

          • 用关键字static声明或定义的函数,只能在定义该函数的文件内有效,而不能被其它源文件所用——有时叫内部函数。
      • extern:外部的(用于全局变量、常量函数

        ①对外部函数的声明可以不用extern,而对外部全局变量和外部全局常量的声明一定要用extern
        ②它们引用时要先在文件的前部进行声明,声明时不分配内存,只是说明它在别处定义,其作用相当于把该它的作用域扩大到该声明所在的文件中

  3. 全局作用域

  4. 函数作用域

  5. 块作用域吧

  6. 静态作用域