C语言笔记_翁恺
mooc上翁恺老师的C语言程序设计,视频笔记
指针
数组变量是特殊指针
- 数组变量本身表达地址
数组单元表达的是变量 - []、*运算符,可以对指针、数组做
- 数组变量是const指针,所以不能被赋值
int a[] <==> int *const a =
指针与const
指针是const
不能再指向别的变量1
2
3int *const q = &i; //q是const
*q = 26; //ok
q++; //error所指是const
不能通过指针去修改这个变量1
2
3
4const int *p = &i;
*p = 26; //error,(*p)是const
i = 26; //ok
p = &j; //ok/判断const标准:const在*的前面还是后面
malloc,动态内存分配
#include<stdlib.h>
void* malloc(size_t size)
- 向malloc申请的空间的大小是以字节为单位
- 返回的结果时void*,需要类型转换为自己需要的类型
- (int)malloc(nsizeof(int))
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
typedef struct AVLNode *Position;
typedef Position AVLTree; /* AVL树类型 */
struct AVLNode
{
int Data; /* 结点数据 */
AVLTree Left; /* 指向左子树 */
AVLTree Right; /* 指向右子树 */
int Height; /* 树高 */
};
int main() {
AVLTree R = (AVLTree)malloc(sizeof(struct AVLNode));
}
结构类型
typedef
声明一个已有的数据类型的新名字。1
2
3
4
5
6
7
8
9
10
11typedef int length
//int:原来的类型名字
//length:现在的类型名字
typedef struct node {
int data;
struct node *next;
}aNode;
//or
typedef struct node aNode;
}
全局变量
全局变量
- 不初始化,全局变量=0,指针=NULL
- 初始化发生在main之前
静态本地变量
- 静态本地变量,在本地变量定义前加上static
- 函数离开时,静态本地变量继续存在,并保存其值
- 只在第一次初始化
- 是特殊的全局变量,位于相同的内存区域
- 有全局的生存期,函数内的局部作用域
头文件
#include编译预处理指令- 它把那个文件的全部文本内容原封不动地插入到它所在的地方
"",现在当前目录找,然后在编译器指定目录找<>,只在指定的目录找- 在函数或者全局变量前,加上static,则其只能在当前编译单元中使用
声明
int i; //是变量的定义
extern int i; //是变量的声明