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


    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
  • 相关阅读:
    一文搞懂双链表
    iOS16适配
    前端面试话术集锦第 12 篇:高频考点(Vue常考基础知识点)
    Linux日志超详细使用操作
    【Python】Python 发布订阅模式实现松耦合
    Java项目:基于jsp+mysql+Spring+mybatis的SSM在线网络图书商城
    论文【harFormer:一种基于字形融合的高精度字符图像去噪框架】翻译
    渗透测试-提权专题
    Java设计模式之原型模式
    关于OpenCV打开摄像头默认分辨率是640*480的问题
  • 原文地址:https://blog.csdn.net/qq_43280851/article/details/125424816