1、static静态变量的作用
(1)、在函数体内,静态变量具有记忆功能,即一个被声明为静态的变量只会被初始化一次,然后在这一函数被调用的过程中其值保持不变。
(2)、在文件内(函数体外),用来限制变量或函数的作用域为当前文件,即如果一个变量被声明为静态的,那么该变量可以被当前文件内所有函数访问,但不能被其他文件中的函数访问。
2、C语言中,为什么static变量只初始化一次
对于所有的对象(不仅仅是静态变量),初始化都只有一次,而由于静态变量具有记忆功能,初始化后一直没有被销毁,都会保存在内存区域中,所以不会再次初始化。
3、在头文件中定义静态变量是否可行
不可行,如果在头文件中定义静态变量,会造成资源浪费问题,同时也可能会引起程序错误。如果在使用了该头文件的每个C语言文件中定义静态变量,按照编译的步骤,在每个头文件中都会单独存在一个静态变量,从而引起空间浪费或程序错误。
所以,不推荐在头文件中定义任何变量,当然也包括静态变量。
4、const有哪些作用
(1)、定义变量(局部变量或全局变量)为常量
(2)、修饰函数的参数,表示在函数体内不能修改这个参数的值
(3)、修饰函数的返回值
如果const修饰返回值的类型为指针,那么函数返回值的内容不能被修改,且该返回值只能赋给被const修饰的指针
如果const修饰的返回值为引用,那么该函数调用表达式不能被作为左值使用
如果const修饰普通的返回值,将这些返回值修饰为const是没意义的,函数调用后,返回值作为一个临时变量的生命周期也结束了
5、什么情况下需要使用const关键字
修饰一般常量
修饰常数组
修饰常对象
修饰常指针
修饰常引用
修饰函数的常参数
修饰函数的返回值
修饰类的成员函数
在另一连接文件中引用const常量
6、常引用与普通引用有什么区别
一般引用的初始化表达式必须是左值,而常引用的初始化表达式可以是右值
7、switch语句中的case结尾是否必须添加break语句
一般必须添加。如果在switch中省略了break语句,那么匹配的case值后的所有情况(包括default)都会被执行
8、volatile在程序中的作用
volatile为一个类型修饰符,用来修饰被不同线程访问和修改的变量。被volatile修饰的变量,系统每次用到它时都直接从对应的内存中提取,而不会利用cache中的缘由数值,系统对这种变量的处理不会做优化。volatile一般用于修饰多线程被多个任务共享的变量和并行设备硬件寄存器等。
9、断言ASSERT()是什么
ASSERT()是一个调试程序时经常使用的宏,它被定义在<assert.h>头文件中,通常用于判断程序中是否出现非法的数据,在程序运行时,它计算括号内的表达式的值。
10、枚举变量的值如何计算
在枚举中,某个枚举变量的默认值为前一个变量的值加1,如果第一个枚举变量没有被复制,则其值默认为0
11、char str1[]=“abc”;char str2[]=“abc”;str1与str2不相等,为什么
str1和str2都是字符数组,每个字符串都有自己的存储区,而str1和str2表示两个字符串的首地址,因此str1和str2的地址不同,所以str1和str2不相等
12、char* str3=“abc”;char* str4=“abc”;str3和str4相等,为什么
str3和str4都是字符指针,"abc"以常量形式存于常量区,str3和str4都是指向这个常量的地址,它们指向同一个常量,所以它们的值相等
13、为什么有时候main()函数会带参数,参数argc和argv的含义是什么
C语言的设计原则是把函数作为程序的构成模块。在C99标准中,允许main()函数没有参数或者两个参数
命令行参数有时用来启动一个程序的执行。argc表示命令行参数的数目,argv是一个指向字符串的指针数组
14、*p++与(*p)++区别
*p++先完成取值操作,然后对指针地址执行++操作;(*p)++先执行取值操作,然后对该值进行++运算
15、exit()与return的区别
return:返回函数调用,如果返回的是main()函数,则退出程序;
exit:在调用处强行退出程序,运行一次程序就结束。exit(0)表示程序结束时返回0给系统;
return是语言级别的,它表示的是调用堆栈的返回;它仅仅从当前的函数中返回,只有return在主函数main的时候,才会结束当前进程。而exit()函数是系统调用级别的,它表示了一个进程的结束。exit()函数用于在程序中随时结束进程;
main函数在结束时会隐式的调用exit()函数,它的功能是删除进程使用的内存空间,同时把错误信息返回给主进程;
使用场景不同。return使用场景:根据函数输入(参数)得到一个输出,而通常来讲,这个输出是通过return来返回的,即return是作为实现函数功能的一个重要的语句。而exit()函数通常不同来实现函数的逻辑,只用来退出进程。
16、在C++语言中如何实现模板函数的外部调用
extern在C++语言中总共有两个作用:一个是解决C++与C语言编译的时候名字匹配的问题;二是未来引用其他模块的代码;
export是C/C++语言中表明函数和全局变量作用范围(可见性)的关键字,该关键字告诉编译器,其声明的函数和变量可以在其他模块中使用
17、C++中异常的处理方法及使用了哪些关键字
try、catch、throw
try{//可能有异常的代码}
catch{//捕获异常}
throw{//函数无法处理该异常时,抛出}
异常处理的目的是为提高程序的安全性和健壮性

最后推荐一个公众号,一枚IT技术人成长路上关于生活和职场的思考,欢迎书友们前来交流和分享心得

C/C++关键字_静态变量