变量的命名最好有意义
名字必须是字母,数字,下划线组成,不能有特殊字符,同时不能以数字开头
变量名不能是关键字
typedef---类型定义,类型重命名
- #include
-
- typedef unsigned int uint;
- //将unsigned int类型重定义为uint
-
- typedef struct Node{
- int data;
- struct Node* next;
- }Node;
- //将struct Node类型重定义为Node
-
- int main()
- {
- unsigned int num1 = 0;
- uint num2 = 1;
-
- struct Node n1;
- Node n2;
-
- return 0;
- }
- #include
-
- void test(){
- int a = 0;
- a++;
- printf("%d\n",a);
- }
-
- int main()
- {
- int i = 0;
- while(i < 5){
- test();
- i++;
- }
- return 0;
- }
用static修饰变量a
- #include
-
- void test(){
- static int a = 0;
- a++;
- printf("%d\n",a);
- }
-
- int main()
- {
- int i = 0;
- while(i < 5){
- test();
- i++;
- }
- return 0;
- }
static修饰局部变量的时候,局部变量出了作用域不销毁。本质上,static修饰局部变量的时候改变了变量的存储位置,影响了变量的生命周期,生命周期变长,和程序的生命周期一样。
这一句没有对应的汇编代码
(前面的static可以理解为固定使其不执行,即为静态,第一次创建后不会再重新创建变量并初始化,局部变量没了创建和销毁过程,每次使用的变量都是上次存起来的)
静态变量在编译期间就已经分配好了空间。
extern—声明外部符号(告诉编译器我在这个项目别的文件里定义了一个符号,你自己去找吧)
编译,链接—>可执行程序
全局变量是具有外部链接属性的
static修饰全局变量的时候,这个全局变量的外部链接属性就变成了内部链接属性,其他源文件(.c)就不能再使用这个全局变量了。我们在使用的时候就感觉作用域变小了,一定程度上来说可以保障安全性。
一个函数本来是具有外部链接属性的,但是被static修饰的时候,外部链接属性就变成了内部链接属性,其他源文件(.c)就不能再使用了。
电脑上的存储设备都有哪些?
寄存器(集成到cpu上)
高速缓存(cache)
内存
硬盘
一开始的计算机,对速度要求没那么高,CPU和内存交换数据,后面随着计算机的发展,对速度的要求越来越高,内存把需要的数据调到高速缓存,调到寄存器,再和CPU进行数据交换,满足速度的要求。
#define定义宏
- #define ADD(x,y) ((x)+(y))
-
- int main()
- {
- int a = 1;
- int b = 2;
- int sum = ADD(a,b);
- printf("%d\n",sum);
- return 0;
- }
宏就是完成替换
continue关键字不能用在switch语句里,用在循环里,能用在switch语句里的关键字有break,default,case。
define不是关键字,是预处理指令。