1、C语言的C89\C90有32个关键字 2、C语言程序 (1)代码文本—>可执行程序(二进制码)—>双击启动程序 生成可执行程序并运行 编译链接并运行程序 在windows系统中,双击应用的本质是运行程序,将程序加载到内存中 任何程序程序运行前都必须加载到内存中。 .obj 程序编译产生的临时文件(Linux) .exe 可执行文件 (2)程序没有运行时存储在哪? 程序没有加载时存储在硬盘中 (3)为什么所有程序使用前都必须加载到内存中? 因为外设速度慢,这样速度更快(与冯诺依曼体系结构有关)。 3、代码块
#include <stdio.h>
#include <windows.h>
int g_x = 100;
int main()
{
int x = 10;
printf("x:%d\n", x);
system("pause");
return 0;
}
4、局部变量和全局变量 (1)定义变量的本质:在内存中开辟一块空间,用来保存数据。(为何一定是内存:因为定义变量,也是程序逻辑的一部 分,程序已经被加载到内存) (2)局部变量:包含在代码块中的变量叫做局部变量。局部变量具有临时性。进入代码块,自动形成局部变量,退出代码块自动 释放。 (3)全局变量:在所有函数外定义的变量,叫做全局变量。全局变量具有全局性。 (4)当局部变量和全局变量存在冲突时,优先局部变量
#include <stdio.h>
#include <windows.h>
int g_x = 100;
int x = 0;
nt main()
{
int x = 10;
printf("x:%d\n", x);
system("pause");
return 0;
}
5、作用域和生命周期 作用域:改变量的有效范围 生命周期:时间的概念,什么时候开辟,什么时候释放。
#include <stdio.h>
#include <windows.h>
int main()
{
int x = 10;
if (x == 10)
{
int y = 20;
printf("局部: x: %d, y: %d\n", x, y);
}
printf("局部: x: %d, y: %d\n", x, y);
system("pause");
return 0; }
6、寄存器变量不能被取地址。 7、定义:开辟空间,只能有一次 声明:告知,可以多次 8、关键字auto 一般在代码块中定义的变量,即局部变量,默认都是auto修饰的,不过一般省略
#include <stdio.h>
#include <windows.h>
int main()
{
for ( auto int i = 0; i < 10; i++)
{
printf("i=%d\n", i);
if(1)
{
auto int j = 0;
printf("before: j=%d\n", j);
j += 1;
printf("after : j=%d\n", j);
}
system("pause");
return 0;
}
}
9、关键字register register 修饰变量,将所修饰变量,放入CPU寄存区中,从而达到提高效率的目的, 使用范围: (1)局部的(全局会导致CPU寄存器被长时间占用) (2). 不会被写入的(写入就需要写回内存,后续还要读取检测的话,register的意义在哪呢?) (3)高频被读取的(提高效率所在) (4)如果要使用,请不要大量使用,因为寄存器数量有限
注意:被register修饰的变量不能被取地址。
#include <stdio.h>
#include <windows.h>
int main()
{
register int a = 0;
printf("&a = %p\n", &a);
system("pause");
return 0;
}
每个硬件都充当上一级硬件的缓存。
|