C语言复习 day02
全局变量 与 局部变量
- 全局变量保存在内存的全局存储区,占用静态的存储单元
- 局部变量保存在栈中,只有在函数被调用时才动态地为变量分配内存单元
注:
- 局部变量被定义时,系统不会对其进行初始化
- 而全局变量,系统会自动对其初始化
C语言 数组
在C语言中,数组名表示数组的地址。
数组名是一个常量指针。
常量指针:指针的指向不能变,但可以通过指针修改指针所指向区域的内容。
int* const p = &a[0]
假设有数组a[10]
Q1:a、&a的区别?
- 定义
- a表示数组第一个元素的地址,即&a[0], 类型是
int*(*表示指针,int表示指针指向的数据类型) - &a表示取整个数组的地址,类型是int (*)[10],表示一个指向10个int类型的数组指针
- a表示数组第一个元素的地址,即&a[0], 类型是
- 相同点:a和&a在数值上是相同的
- 不同点:它们实现运算的结果是不同的
C语言使用malloc()函数为动态数组分配内存时,还要检查内存分配是否成功(即返回的指针是否为NULL)。
C语言 枚举
C语言 函数指针
int (*p)(int, int) = &max
p就是一个函数指针,此时p(a, b)等价于max(a, b)
在早期的C语言中,函数没有返回值可以不写返回值的类型,像下面这样。
foo() {
}
这样做会导致返回类型默认为int,但是这种做法很快就被淘汰了,因为这人也太懒了,多写void咋了?

浙公网安备 33010602011771号