static
- static作用
- a:在函数体中,一个被声明为静态的变量在这一函数被调用过程中维持其值不变
- b:在模块内(但在函数体外),一个被声明为静态变量的变量,可以被这个模块内的所有函数使用,但不能被模块外的函数使用,它是一个本地的全局变量,
- c:在模块内,一个被声明为静态的函数只可被这一模块内的其它函
数调用,那就是这个函数被限制在声明它模块的本地范围内使用
static全局变量与普通的全局变量有何不同?static局部变量和普通局部变量有何区别?static函数与普通函数有什么区别?
上面三个不同就是隐蔽性的区别。static全局变量与普通的全局不同在于,普通的其他源文件也可以访问,而static全局变量是对其他源文件隐蔽的。以此类推上面所说的后面的情况。
extern的作用
- extern可置于变量或者函数前,以表示变量或者函数的定义在别的文件中,提示编译器遇到此变量或函数时,在其它模块中寻找其定义
.关键字const是什么含义?
- 1、修饰变量为只读,能对不想修改的变量进行保护作用,能提高程序的健壮性;
- 2、const定义的常量编译器可以对其进行数据静态类型安全检查;
- 3、const修饰函数形式参数:当输入参数为用户自定义类型和抽象数据类型时,将“值传递”改为“const&传递”可以提高效率;
- 4、关键字const的作用是为给读你代码的人传达非常有用的信息。
指针常量和常量指针(const)
- 指针常量:(int* const p)指针是常量,指针指向不可以改变,内容可以改变;
- 常量指针:(int const *p)指向常量的指针,指向可以改变,但内容不可以改变;
总结:看const修饰的是指针还是变量;
堆与栈的区别
Heap是堆,Stack是栈;
Stack的空间由操作系统自动分配/释放,Heap上的空间是手动分配/释放;
C中的malloc函数分配的内存空间在堆上,C++对应的是new操作符;
程序在编译期间对变量和函数分配内存都在栈上进行,且程序运行过程中函数调用时参数的传递也在栈上进行;
函数指针和指针函数
函数指针:指向函数的指针;表示:int (*func)(int);
指针函数:返回指针的函数;表示: int* func(int);
有相关验证的代码 reference文章