关键字
第一个程序的"Hello World"
- 文本代码文件 ——> 可以执行的程序(二进制文件)
- 我们自己是写代码,编译器的角色就是把我们的代码变成二进制文件
- 同理 我们在 windows 中双击的本质,就是运行程序,将程序加载到内存当中去,
- 任何程序的运行都是需要加载到内存当中去的,《冯诺依曼体系结构体》
- 输入,运算器,控制器,存储器,输出
- 程序没有运行时是在硬盘当中的,运行时是在内存当中的,:因为,快,节约成本,让大家都可以使用到计算计。
int main()
{
printf("Hello World\\n");
return 0;
}
变量
- 计算机是为了解决人们计算数据上的问题,所以我们需要数据,而计算机不是任何一刻都需要数据,而变量就是用来存放数据的。
- 定义变量的本质
- 就是存放数据的,在内存中开辟一空间,用来存放数据的,注意是在内存当中开辟的空间。
- 因为:
- 定义变量也是程序的逻辑上的一部分,程序的运行是在内存中进行的
- 所有的变量本质上都是在内存中开辟一块空间的
- 变量是在运行的时候才会开辟空间
- 而程序只存在运行的时候才加载的内存空间中去
- 当你定义一个变量的时候就已经在内存中开辟空间了。
- 变量的定义才会开辟空间,而且同一个变量只能定义一次,
- 变量的声明不会开辟空间,可以声明无数次
作用域,生命周期
解析
- 上述代码 ,中我们的 j 是在 if 语句定义的,除了该作用域,就是失效了。什么 未定义标识符 “j”
寄存器 register
- 局部变量上的使用,(全局的 会导致 CPU 寄存器长时间被占用)
- 不会被写入(写入变量要写回到内存当中去,后续还要读取到寄存器当中去,失去了其寄存器的意义了)
- 高频被读取的(提高效率所在)
- 如果使用 寄存器 register 数量有限不一定成功的
注意:
- register 修饰的变量,是不能取地址的,因为已经放在寄存区中去了,地址是内存相关的概念,在寄存区中不存在的
int main()
{
register int num = 100;
printf("%p\n", &num); // %p 打印地址
return 0;
}
结果:
最后:
限于自身的水平,其中存在的错误 ,请大家给予指教,韩信点兵——多多益善,谢谢大家!后会有期,江湖再见!