C语言学习笔记
结构体(struct)
结构体的嵌套
如果有,就可以有、、、
如果有变量定义:
注意:、是两种等价的形式。写法错误,因为p1不是指针。
自定义数据类型
C语言提供 typedef 的功能来声明一个已有的数据类型的新名字
使得成为类型的别名
联合(union)
上面代码的含义是anelt的成员是一个或是一个,union类型的大小由成员中最大值决定
x86cpu为小端机,内存存放数时 低位在前 ,故输出了D2040000,说明chi.ch与chi.i公用同一处内存空间。
宏
全局变量
全局变量初始化:
1.没有做初始化的全局变量会得到0值,指针会得到NULL
2.只能用编译时刻已知的值来初始化全局变量
3.它的初始化在main函数之前
全局变量的赋值不能是变量
正确的做法是
还需要注意,如果函数内部存在与全局变量同名的变量,全局变量会被隐藏
静态本地变量
- 静态本地变量实际上是特殊的全局变量,位于相同的内存区域
- 静态本地变量具有全局的生存性,函数内的局部作用域
返回指针的函数需要注意:
- 返回本地变量的地址是危险的
- 返回全局变量或静态本地变量的地址是安全的
- 安全的做法是返回传入的指针
宏定义(编译预处理指令)
- #开头的是编译预处理指令
- #define用来定义一个宏
- #define
- C语言的编译器开始编译之前,编译预处理软件会将程序中的名字换成值(完全的文本替换)
- 值可以为任何东西(包括命令)
预定义的宏:
- 源代码文件的行 (整数)
- 文件名称(字符串)
- 编译文件时的日期(字符串)
- 编译时的时间(字符串)
- 返回程序名(字符串)
使用宏注意加上括
多个源代码文件
有两个文件分别为
多个C文件的调试
法一:
- 将多个C项目文件放入同一个新建文件夹project。我们以文件和为例子
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!