变量概念
- 概念:既能读又能写的内存对象,称为变量;若一旦初始化后不能修改的对象则称为常量。
- 变量定义形式: 类型 标识符, 标识符, … , 标识符 ;
- 例如:
int x ;
int wordCut , Radius , Height ;
double FlightTime , Mileage , Speed ;
变量本质
1、程序通过变量来申请和命名内存空间 int a = 0
2、通过变量名访问内存空间
(一段连续)内存空间的别名(是一个门牌号)
修改变量有几种方法?
1、直接
2、间接。内存有地址编号,拿到地址编号也可以修改内存;于是横空出世了!(编程案例)
3、内存空间可以再取给别名吗?
4、数据类型和变量的关系
通过数据类型定义变量
总结及思考题
1 对内存,可读可写;2通过变量往内存读写数据;3 不是向变量读写数据,而是向变量所代表的内存空间中写数据。
问:变量跑哪去了?
思考1:变量三要素(名称、大小、作用域),变量的生命周期?
思考2:C++编译器是如何管理函数和变量之间的关系的?
====》引出两个重要话题:
内存四区模型
函数调用模型
int main()
{
//2种方法,通过变量直接操作内存
//通过内存编号操作内存
int i = 0;
printf("&i:%d\n", &i);
*((int *)(1245024)) = 10;
printf("i:%d", i);
printf("hello....\n");
getchar();
return 0;
}
内存四区的建立流程
流程说明
1、操作系统把物理硬盘代码load到内存
2、操作系统把c代码分成四个区
3、操作系统找到main函数入口执行
各区元素分析
代码解析
#define _CRT_SECURE_NO_WARNINGS
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
void main()
{
int a ;
int b;
int *p ;
//p = 0xaa11
a = 10; //1 直接赋值 //cpu里面执行
printf("&a: %d\n", &a);
//2间接赋值 ==直接通过内存
*(1245024) = 200;
printf("a: %d\n", a);
{
p = 1245024; // 间接赋值 通过指针
*p = 300; // *p本质是*(1245024)
}
//3 对内存空间能不能在取 别名..... C++ 引用 抛砖.....
//1245024
printf("hello...\n");
system("pause");
return ;
}