关于C语言static的问题

问一个C语言static相关的问题

如图所示为什么static隐藏了f1函数,却没有隐藏sta变量呢。还有就是既然被隐藏了,为何编译通过?

img

img

img

吓了我一跳,你那 f1(),里面就执行了个字符串而已,并不是打印,你加上printf 试试看

没有隐藏,只是你f1没有printf("static var\n")输出而已

f1里写的是个啥呀,一个字符串常量,结束
printf呢

被static修饰的函数称为内部函数,只能被本文件中的函数调用,而不能被同一程序其它文件中的函数调用。区别于一般的非静态函数(外部函数)。

你的static修饰的变量和函数是在main函数外定义的,都是可以在本程序中使用的,无非就是函数不能被其他文件外部引用,变量的值在一次运行中只会被初始化一次,下一次使用时的变量值是上一次使用结束后的值,你那个函数没有输出,就只是在程序中写了个字符串和换行符。