【C语言】基础语法的简单概括
数据类型
为了更加丰富地表达生活中的各种值,C语言中有不同的数据类型。每个数据类型有其占用空间的大小。我们用sizeof
可以获取某个数据类型所占用空间的字节数。
下面这段代码:
1 | printf("%d", sizeof(char)); |
在vs2019运行时,输出结果是:1244848
在linux平台运行时,结果是:1248848
对比发现,long在不同的编译器结果不同。c语言并没有规定long的大小,只是规定了sizeof(long)>=sizeof(int)。
变量的作用域和生命周期
- 作用域:变量作用的范围。变量在哪里可以使用,哪里就是它的作用域。
局部变量的作用域是变量所在的局部范围;全局变量的作用域是整个工程。
- 生命周期:变量由创建到销毁这一时间段
局部变量的生命周期是:局部变量的作用域;全局变量的生命周期是:整个程序。
常量
字面常量
const修饰的常变量
1 | const double pi = 3.14; |
由const修饰的变量只是不可以再次修改,但本质仍是变量。
define定义的标识符常量
1 |
|
枚举常量
1 | enum MyEnum |
字符串
1 | int main() |
字符串的结束标志是一个\0
的转义字符。在计算字符串长度的时候\0
不算作字符串内容。printf输出内容是\0
之前的内容,arr2找不到\0
出现了乱码,用strlen
计算长度时也会出现随机值。
转义字符
下段代码的输出结果是什么?
1 | printf("%d\n", strlen("c:\test\628\test.c")); |
输出结果是14。
\t
----->水平制表符
\62
—>将8进制数数字62转换成10进制数字50
注:
\ddd
中ddd表示1-3位八进制数字,范围是0-7,所以上题中是\62,不是\628
\xdd
中dd表示2个十六进制数字。 如:
1 | printf("%c\n", '\x31'); //1 |
关键字
1 | auto break case char const continue default do double else enum |
define
定义标识符常量
1 |
|
定义宏
1 |
|
static
static是用来修饰变量和函数的
- 修饰局部变量-称为静态局部变量
- 修饰全局变量-称为静态全局变量
- 修饰函数-称为静态函数
修饰局部变量
观察下面两段代码
1 |
|
1 |
|
对比发现,static修饰局部变量改变了变量的生命周期,让静态局部变量出了作用域依然存在,到程序结束,生命周期才结束。
static修饰局部变量时,改变了局部变量的存储位置,将局部变量由堆区存储到静态区。
修饰全局变量和函数
一个全局变量(函数)被static修饰,使得这个全局变量(函数)只能在本源文件内使用,不能在其他源文件内使
用。
全局变量(函数)具有外部链接属性,可以用extern外部引用,但被static修饰后,外部链接变成了内部链接,只能在当前源文件内部使用。
typedef
类型重命名:使类型名简单化,书写更方便
1 | //将类型unsigned int重命名为uint_32,下次可以直接使用类型uint_32 |
结构体
1 | //定义结构体类型 |