变量的命名最好有意义
名字必须是字母,数字,下划线组成,不能有特殊字符,同时不能以数字开头
变量名不能是关键字
typedef---类型定义,类型重命名
#include <stdio.h>
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 <stdio.h>
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 <stdio.h>
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不是关键字,是预处理指令。