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

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;
    }
    

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;
      }
      
    • test2.c
      extern int x;//引用test1.c中的变量
      extern int y;
      
      int add(){
      
          return x+y;
      }
      
    • 编译运行:必须将两个文件编译到同一个文件中
      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
      

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");//字符串拼接输出
/************************************************************/

}

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);
    }
    
  • 运行结果
    结果:a = 3.50
    b = 2.50
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值