• 二、变量、常量的声明与定义


    1、变量的声明与定义

    • 只声明:extern int x;
      • 声明时不会分配内存地址
    • 既声明又定义: int x;
      • 会分配内存地址
    • 初始化: x = 0;
    • 代码实现:
      #include<stdio.h>
      
      int x;//声明,也是定义,在编译时会分配内存地址
      int y;
      
      int add(){
          extern int x;//只是声明,不会分配内存地址
          extern int y;
      
          x = 1;//初始化
          y = 2;
      
          return x+y;
      }
      
      int main(){
          int result;
          result = add();
          printf("result=%d",result);
          return 0;
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21

    2、extern关键字声明

    • 作用:
      如果需要在一个源文件中引用另外一个源文件的变量或函数,只需在引用的文件中加上extern即可
    • 代码实现:
      • test1.c
        #include<stdio.h>
        
        int x = 2;//声明,也是定义,在编译时会分配内存地址
        int y = 9;
        int add();
        int main(){
            int result;
            result = add();
            printf("result=%d",result);
            return 0;
        }
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
        • 8
        • 9
        • 10
        • 11
      • test2.c
        extern int x;//引用test1.c中的变量
        extern int y;
        
        int add(){
        
            return x+y;
        }
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
      • 编译运行:必须将两个文件编译到同一个文件中
        d102@d102-W65KJ1-KK1:/media/d102/EPAN/Desktop/c++_ubuntu/c++_01/workspace$ gcc test1.c test2.c -o main.out
        d102@d102-W65KJ1-KK1:/media/d102/EPAN/Desktop/c++_ubuntu/c++_01/workspace$ ./main.out 
        result=11
        
        • 1
        • 2
        • 3

    3、常量

    • 定义:
      常量是固定值,在程序运行期间不会被改变
    • 分类:
      • 整数常量
        • 八进制:0
        • 十进制:
        • 十六进制:0x
        • 后缀:
          • 无符号整形:u
          • 长整型:l
          • 无符号长整型:lu
      • 浮点常量
        • 表示形式:
          • 小数形式:3.123
          • 指数形式: 344E-3
      • 字符常量
        • 普通的字符:‘x’
        • 转义字符:‘\n’
      • 字符串常量
        • 形式:“hello”
      • 枚举常量
    #include<stdio.h>
    /*******************************************************/
    //整数常量三种进制
    int a = 010;//八进制
    int b = 10;//十进制
    int c = 0x10;//十六进制
    /************************************************************/
    /*
        整数常量的分类:
            整数
            无符号整数:后缀u
            长整数:后缀l
            无符号长整数:后缀lu或ul
    */
    int d = 10u;//无符号整数
    int e = 10l;//长整数
    int f = 10lu;//无符号长整数
    /************************************************************/
    int main(){
    /************************************************************/
        printf("a=%d, b=%d, c=%d, d=%d, e=%d,f=%d\n",a,b,c,d,e,f);
    /************************************************************/
        //在C语言中,字符串常量用""表示
        printf("hello,\
        dear\n");//字符串换行拼接
        printf("hello,""dear""!\n");//字符串拼接输出
    /************************************************************/
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29

    4、#define和const定义常量

    • 编译器处理方式
      • #define在预处理阶段展开
      • const在编译阶段使用
    • 类型检查
      • #define只是进行符号替代,不进行类型检查
      • const需要进行类型检查
    • 存储方式
      • 宏定义不分配内存,只进行展开
      • const分配内存
    • const定义常量
      • 格式: const 数据类型 变量名 = 变量值;
      • 注意:必须严格按照格式进行常量定义,缺一不可
      • 特点:const并不是定义一个常量,只是把变量的存储类变为只读模式,可以理解为常变量
    • #define的边缘效应
    • 代码实现:
      #include<stdio.h>
      #define N 2+3
      #define M (2+3)
      int main(){
          double a;
          double b;
          a = (float)N / (float)2;//float 2+3/2
          b = (float)M / (float)2;//float (2+3)/2
          printf("结果:a = %.2f\nb = %.2f",a,b);
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
    • 运行结果
      结果:a = 3.50
      b = 2.50
      
      • 1
      • 2
  • 相关阅读:
    2023 极术通讯-安谋科技发布“山海”S20F安全解决方案,持续加码智能汽车“芯”赛道
    MySQL中对于索引的理解
    百度校园招聘历年经典面试题汇总:测试开发
    使用echarts来显示世界地图和全国地图,并且可以下钻层级
    【C++面向对象】6. 指向类的指针
    Simulink 最基础教程(一)
    遭灰熊做空,蔚来汽车在股价跳水后选择了回应
    VMware虚拟机报错(虚拟化性能计数器需要至少一个可正常使用的计数器)
    安全驱动怎么设计(二)
    计算机毕业设计Java家政服务平台(源码+系统+mysql数据库+lw文档)
  • 原文地址:https://blog.csdn.net/qq_43280851/article/details/125424816