1. auto是自动,一般省略掉了!
2.break跳出循环的。通常和for、while、do while、continue一起用。
3.if else、switch和case、default、goto都是和分支有关的。
4.char是类型,和short、int、long、float、double,都是一些类型,也可以当成关键字。enum是枚举、struct是结构体、union是联合体(共用体)、signed有符号的、unsigned无符号的、 sizeof计算大小、typedef类型重命名、void是无(函数的返回类型,函数的参数)和类型有关的
5.const 是常属性。
6.extern声明外部符号的
7.register寄存器、static静态的
8.return函数返回值
注意:定义变量名字的时候不要跟关键字重复。
变量的命名:
1.有意义:int age、float salary。
2.名字必须是字母、数字、下划线组成不能,不能有特殊字符,同时不能以数字开头。
3.变量名不能是关键字。
一、关键字typedef
类型定义,又叫类型重命名。
如图中num和num2创建方式一样 ,前面相当于用uint取代了unsigned int 。n和n2也类似这种情况。
二、关键字static
1.修饰局部变量。
这段代码运行不起来是因为,缺少一个头文件,加上include <stdio.h>就可以了。运行结果如下:
为什么是10个2因为局部变量a的作用域仅限于定义它的函数或代码块,超出范围后即被销毁。了解局部变量的生命周期对于避免错误和优化代码结构至关重要。
为什么不一样了?
在编程中,使用static修饰局部变量会改变其生命周期,使其在离开作用域后不被销毁。这意味着变量的值会保持在下一次调用时继续使用,而不是重新初始化。
使用static修饰局部变量会改变变量的存储位置的。
局部变量通常存放在栈区,生命周期短暂。而一旦被static修饰后,变量将转移到静态区,生命周期延长至程序结束。
static修饰局部变量时,它的存储位置和生命周期是非常关键的。被static修饰的变量会在静态区分配空间,而不是在栈区,确保它在整个程序生命周期内保持不变。
static修饰局部变量后,它的值可以改变,但其存储位置不会变。即使变量的值被重新赋值,原始分配的内存空间依然存在,不会被回收或重新分配。
普通局部变量和static变量的主要区别在于存储区域的不同。普通局部变量在栈区分配,而static变量则在静态区存储,这影响了它们的生命周期和作用域。
在程序执行期间,static变量只会创建一次。此变量的地址和存储空间在编译时就已经分配好,后续的调用不会再创建新的空间。
2.修饰全局变量。
上面有include <stdio.h>否则会保错。
全局变量的定义是指在所有函数外部声明的变量,所有函数均可访问。extern是用来声明外部符号的。使用全局变量时需要注意作用域和链接属性,尤其是在多个源文件中。通过声明外部符号,程序员可以在不同文件中共享全局变量,提高代码的可重用性。
为什么会报错呢?
使用static修饰全局变量会改变其链接属性,使其只能在定义的文件内部使用。
在C语言中,使用static修饰全局变量可以改变其连接属性,使其仅在定义的源文件内部可见。我们在使用时就感觉作用域变小了。
static修饰全局变量的主要作用是限制其作用域,使得该变量无法在其他源文件(.c文件)中访问。这意味着该变量只能在其定义的文件内使用,从而避免了潜在的命名冲突。
使用static修饰局部变量时,变量的存储位置也发生变化,变为静态区。这使得局部变量在多次函数调用中保持其值,而不是每次调用时重新初始化。
将全局变量设置为static后,其存储位置仍然在静态区。这种存储方式确保了变量的生命周期在程序运行期间持续存在,而不是在函数调用时创建和销毁。
3.修饰函数。
注意这里出现了警告⚠️ 因为在编程中,函数的声明对于避免编译错误至关重要。通过在使用函数之前声明其存在,编译器可以正确识别函数,从而避免未定义的警告或错误。
编译器在处理代码时是从上到下扫描的,因此在使用函数之前进行声明非常重要。这可以确保编译器在遇到函数调用时已经知道该函数的定义,避免出现未定义的警告。
使用关键字static修饰函数时,该函数的连接属性会变为内部连接。这意味着其他源文件将无法访问这个被static修饰的函数,从而导致链接错误。
科普一下:register关键字用于声明寄存器变量,这些变量存储在CPU内部的寄存器中,以提高访问速度。尽管它在现代编程中使用较少,但了解其概念对理解计算机内部结构仍然重要。
计算机存储系统的结构呈金字塔形状,存储设备的速度和空间大小呈现出反向关系。越快的存储设备通常空间越小且成本较高,而访问速度慢的设备则相对空间大且成本低。
编译器的智能化显著提升,能够自动优化变量的使用。通过将频繁使用的变量放入寄存器,编译器极大提高了程序的读写效率,这为编程带来了便利。
计算器变量的使用变得高效,编译器会根据实际情况自动优化变量的存储位置。即使不主动设置变量为计算器变量,编译器也会智能选择将某些变量放入寄存器中进行计算。
现代编译器具有高度的智能化,可以根据寄存器的使用情况来优化性能。当前的编译器能识别空闲寄存器,并将适当的变量自动放入寄存器中,以提升执行效率。
注意:这里关键字只是建议,最终决定权还是看编译器。