c中static总结
static 意为静态的意思。
函数前不加任何关键字默认是对外可见的, 意为当有多个源文件时, 其他文件能够访问这个函数, 当声明为static时, 则可以对外隐藏, 即使多个文件有相同的名字也无妨。
函数内部声明的static变量, 意为静态变量, 与auto变量不同的是, 它存储在静态区, 而不是在堆栈中, 若没有初始化, 则有默认值, 且只初始化一次, 这个变量作用域不变, 但生存期在程序运行时一直有效。即作用域不变, 生存期变长。
static char *str = malloc(sizeof(char) * 10);
这个语句不能够编译, 因为静态变量只能存在静态区中, 但malloc是在堆中动态分配的。
全局变量也是存储在静态区中, 但不加static, 当有多个源文件时可以访问, 若声明static, 则只有这个文件可以访问, 可见全局static变量, 生存期不变, 作用域变小。
浙公网安备 33010602011771号