- 1.关键字 typedef
- 2.关键字static
- 2.1修饰局部变量
- 2.2修饰全局变量
- 2.3修饰函数
- 3.关键字register
- 4.#define 定义常量和宏
- 5.==指针==
- 5.1内存
- 5.2指针变量的大小
- 6.结构体
typedef意思是类型重命名。
typedef struct Node
{
int data;
struct Node* next;
}Node;
typedef unsigned int uint;//类型本身没有变,只是将类型名缩写一下。
int main()
{
unsigned int num = 0;
uint num2 = 1;
struct Node n;
Node n2;
return 0;
}
2.关键字static
2.1修饰局部变量
局部变量a进入test函数括号内开始创建,出大括号被销毁,所以每次进入循环都要重新创建a的值,循环10次,所以打印10个a。
而在int前面加了static之后,第一次打印的a的值2没有被销毁,在下一次进入循环时在上次保留的值2基础上a++,依此类推,故打印2到11。
结论:static修饰局部变量时,局部变量出了作用域,不销毁的。
本质上static修饰局部变量的时候,改变了变量的存储位置。
程序结束之后局部变量才被销毁。
影响了变量的生命周期,生命周期会变长了,和程序的生命周期一样。
内存有栈区,堆区,静态区。
普通的局部变量是放在栈区的,而被static修饰后放在静态区。
2.2修饰全局变量void表示不需要返回。
2.3修饰函数原来全局变量能在整个工程中使用,而被static修饰之后全局变量只能在当前这个文件中使用,给我们感觉全局变量的作用域变小了。
CPU早期从内存里面拿数据进行计算,随着技术进步CPU的处理速度越来越快,但是内存的读写速度不快,造价高。
所以之后CPU从寄存器中拿数据,当处理寄存器中的数据时,可以把内存的数据往高速缓存里拿,把高速缓存的数据往寄存器中拿,只要保证大部分数据在寄存器中能找到,整体CPU速度得到提升。
如果寄存器空着没用,编译器会主动把某些数据放到寄存器中来提升读写效率。
int main()
{
//寄存器变量
register int num = 3;//建议3存放在寄存器中
return 0;
}
4.#define 定义常量和宏
5.指针
5.1内存
内存会划分为一个个的内存单元(一个内存单元的大小:1 byte)每个内存单元都有一个编号。
C,C++规定,16进制数必须以 0x开头。
内存单元
编号->地址->地址也被称为指针
存放指针(或地址)的变量就是指针变量。
定义3个指针变量👇
int main()
{
int* p;
char* pc;
int* p1, * p2, * p3;
return 0;
}
6.结构体
💎看到这里,你应该有所收获吧!感谢你的了解,更感谢您的支持❤️,点赞👍收藏⭐留言📋都是我最大的动力。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)