1.第一个C语言程序
#include<stdio.h>
#include<windows.h>//防闪屏
//文本代码->可执行程序(二进制文件)->双击启动程序
//生成可执行程序并运行
int main()
{
printf("hello world\n");
system("pause");
return 0;
}
1)在windows中,双击的本质是运行程序,将程序加载到内存当中;
2)任何程序在被运行之前都必须加载到内存当中(所有的变量的本质都是要在内存的某个位置开辟空间(此处链接声明与定义))
? ? ?a.程序没有被加载的时候,在硬盘当中。
? ? ?b.为什么要加载在内存:快!!!
2.声明与定义
在内存中开辟特定大小的空间,用来保存数据。
int main()
{
int a = 10;
double d = 20;
char c = 'c';//初始化
c = 'd';//赋值
system("pause");
return 0;
}
因为有数据需要暂时被保存起来,等待后续处理。
(1)程序运行,需要加载到内存;
(2)程序计算,需要使用变量;
那么,定义变量的本质:在内存中开辟一段空间,用来保存数据。(为何一定是内存,因为定义变量,也是程序逻辑的一部分,程序已经被加载到内存)。
略。(此处先省略,详细内容在entern部分)
如何使用:一般在代码块中定义的变量,即局部变量,默认都是auto修饰的,不过一般省略。
默认的所有变量都是auto吗?不是,一般用来修饰局部变量。(函数或代码块内)
int main()
{
for(int i=0;i<10;i++)
{
printf("i=%d\n",i);
if(1)
{
auto int j=0;
printf("before: j=%d\n",j);
j++;
printf("after: j=%d\n",j);
}
}
system("pause");
return 0;
}
补充:局部变量,自动变量,临时变量,统称为局部变量。
register修饰变量
尽量将所修饰的变量,放入CPU寄存器中,从而达到提高效率的目的。
那么,什么样的变量,可以采用register呢?
1.局部的(全局会导致CPU寄存器被长时间占用);
2.不会被写入的(写入就与要写回内存,后续还需要读取检测的话,register意义何在?);
3.高频被读入的(提高效率所在);
4.不要大量使用,寄存器数量有限。
5.register修饰的变量不能取地址。