static用途:
1)全局变量和局部变量在内存中的区别:
全局变量:在内存的静态存储区
局部变量:在内存的栈区
(全局变量如果不初始化,由编译器自动初始化为0, 局部变量不初始化,结果未知)
2)static全局变量和普通全局变量的区别:
相同点:都存储在静态存储区
不同点:(作用域不同)
普通全局变量作用域包括各个源文件;
static全局变量作用域只在定义它的源文件内有效。
3)static局部变量和普通局部变量的区别
不同点:(内存)
static局部变量存储在内存的静态存储区;
普通局部变量存储在内存的栈区。
(生存特点)
static局部变量只在定义的函数内有效,内存只分配一次,函数返回后,变量不会消失;(现象:static变量只被初始化一次,下次使用依据上一次的值)。
普通局部变量在定义的函数内有效,函数返回后,变量被回收,消失。
4)static函数和普通函数的区别
不同点:(作用域)
static函数即为内部函数,在内存中只有一份。(当重复包含改头文件时,也不会提示重复定义函数)
普通函数在每个调用中维持一份拷贝,(当重复包含该头文件时,会提示重复定义函数)
struct 结构的内存排列规则
怎么预防strcpy内存越界(查“内存越界”)
strncpy()
C程序和C++程序怎么区别
C++中定义了宏 __cplusplus;
#ifdef __cplusplus
#ifndef __cplusplus
#endif
.c++中定义了__cplusplus,C语言中没有该定义。即:识别是c代码还是c++代码。