常量和变量

0. 常量


  • 概念:一些 不能改变 的数据
  • 定义
    // 整型常量
    printf("%li\n", 10l);
    
    // 单精度浮点型常量
    printf("%f\n", 5.2f);
    
    // 双精度浮点型常量
    printf("%lf\n", 66.8);
    
    // 字符型常量
    printf("%c\n", 'a');
    
    // 转义字符型常量
    '\n';
    
    // 字符串型常量
    printf("%s\n", "abc");
    

1. 变量


  • 概念
    • 一个存储数据的 容器
    • 引用着某个 具体值,并且可以 改变 这个引用
  • 定义
    • 方式一:先定义 再初始化
      int a;
      a = 100;
      printf("%i\n", a);
      
    • 方式二:定义同时初始化
      int a = 100;
      printf("%i\n", a);
      
    • 方式三:先定义 再完全初始化
      int a, b;
      a = b = 100;
      printf("a = %i, b = %i\n", a, b);
      
    • 方式四:定义同时不完全初始化
      int a, b = 100;
      a = 88;
      printf("a = %i, b = %i\n", a, b);
      

2. 作用


  • 方便维护
    int a = 8;
    printf("%i\n", a + 1);
    printf("%i\n", a + 2);
    printf("%i\n", a + 3);
    
  • 节省空间
    // 打印多遍 "不要温和地走进那个良夜。"
    printf("不要温和地走进那个良夜。\n");
    printf("不要温和地走进那个良夜。\n");
    printf("不要温和地走进那个良夜。\n");
    ...
    
    // 问题
    1. 这样整个源码文件会比较大,占用磁盘空间
    2. 当解释执行这些字符串的时候,都会开辟内存空间,要开辟多份,占用内存空间
    

3. 注意


  • 一个变量只能引用 一个值
  • 变量名使用之前一定要 赋值
  • 命名规范
    1. 由 英文字母、数字 和 下划线 组成;
    2. 英文字母区分大小写;
    3. 非关键字;
    4. 不能使用数字开头;
    5. 见名知意;
    6. 驼峰标识。
    

4. 内存分析

  • 变量所占用字节数不仅跟 类型 有关,还跟 编译器环境 有关
  • 变量存储单元的 第一个字节 的地址就是 该变量的地址
  • 内存寻址 由大到小
    int a = 10;
    int b = 100;
    printf("%p\n", &a);
    printf("%p\n", &b);
    char *c = &a;
    for (int i = 0; i < sizeof(a); i++) {
      int result = c[i];
      printf("%i\n", result);
    }
    
    变量内存.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容