变量的概念

  • 概念:
    • 变量: 既能读又能写的内存对象。
    • 常量:一旦初始化后不能修改的对象
  • 变量定义形式:类型标识符, 标识符, … , 标识符;
  • 例如:
    int x ; int wordCut , Radius , Height ;
    double FlightTime , Mileage , Speed ;

变量的本质

  1. 程序通过变量来申请和命名内存空间 int a = 0
  2. 通过变量名访问内存空间,也就是说变量是内存空间的别名
    (一段连续)内存空间的别名(是一个门牌号),如下图:
    int a,在内存中占4个字节,连续32个bit;
    double b ,8个字节,连续64个bit

也就是说我们通过变量来操作内存,对内存可读可写。

变量的本质分析 - 图1

修改变量有几种方法?

  1. 直接
  2. 间接。内存有地址编号,拿到地址编号也可以修改内存;于是横空出世了!(编程案例)
  3. 内存空间可以再取给别名吗? 可以 C++ 引用
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. void main()
  4. {
  5. int a;
  6. int b;
  7. int *p; //内存中分配空间
  8. //直接赋值 // cpu里面执行
  9. a = 10;
  10. printf("&a:%d\n", &a); //&a:3210316
  11. printf("a:%d\n", a); //a:10
  12. //间直赋值 - 直接通过内存(变量的门牌号)
  13. *((int *)&a) = 200; //指针的来源
  14. printf("a:%d\n", a); //a:200
  15. //间直赋值- 通过指针
  16. {
  17. p = &a;
  18. *p = 300;
  19. printf("a:%d\n", a); //a:300
  20. }
  21. system("pause");
  22. }

通过数据类型定义变量

  • 通过数据类型定义变量

总结及思考题

  1. 对内存,可读可写;
  2. 通过变量往内存读写数据;
  3. 不是向变量读写数据,而是向变量所代表的内存空间中写数据。
  4. 问:变量跑哪去了?(代码区)
  • 思考1:变量三要素(名称、大小、作用域),变量的生命周期?
  • 思考2:C++编译器是如何管理函数1,函数2变量之间的关系的?
  • 引出两个重要话题:内存四区模型 和 函数调用模型