声明:本人尚未工作,只是在面试中遇到过一些C语言笔试题目,回来网上搜索发现很多都是网络上点击率很高的题目,这里对于那部分内容就不在赘述,只是总结自己认为不错的,有的是自己总结的,一方面作为自己的知识储备,另一方面拿出来给大家一起分享。。。。
static用法
1、函数之外的变量就是全局变量,这个想法正确吗?
答: 在C中,完全正确。只不过按有没有加static修饰可以分为静态全局变量和一般全局变量两种。
2 如果在全局变量的前面加上static 会有什么用?
答:在C中,静态全局变量意味着两个方面。一、在生命期方面,它与一般全局变量一样,是与整个程序共存亡的;二、在可见性方面,它只在定义它的那个编译单元中可见。比如说,你在testA.c中定义了一个静态全局变量x: static int x;则你只能在testA.c的函数中引用它,在另一个文件testB.c中如果想用它的话:extern int x;然后再某个函数中使用x,则一般编译器在连接阶段会报错说找不到x这个符号。
3 如果在函数的前面加上static 会有什么用?
答:与静态全局变量差不多。简单地说,在testA.c中定义的静态函数:static void A(void)是不能在testB.c的函数中调用的,如果一定要这样的话编译器连接时会报错的。
static的用途:一般对那些非接口函数和确定外部不使用的全局变量加上static限制,可以保证不会被其它编译单元非法使用,同时也可以避免与别的编译单元中的同名符号冲突。在驱动程序中用的较多
详细出处:http://www.52rd.com/Blog/Detail_RD.Blog_qiu3809484_21319.html
自己总结:简而言之可以说static作用就是限制变量和函数的作用域,限制在定义文件当中。
const用法
语言中const代表着”不可变“,基本和常量一样不可修改,但是应用场景不一样。
修饰一般常量 一般常量是指简单类型的常量。这种常量在定义时,修饰符const可以用在类型说明符前,也可以用在类型说明符后
一.应用在变量
const char a='A';
a='B'; //错误,变量a的值不可以修改。
此时代表变量a值不可改变,任何企图修改a变量值的语句(例如a=20;)都会报错。
二.应用在指针
1对指针来说,可以指定指针本身为const,也可以指定指针所指的数据为const,或二者同时指定为const。
A const int* a; 或int const *a;//*a是const,但指针a可变
B const* int a;或int * const a;//a是const,但*a可变 即:指针指向固定的地址,但是此地址中存储的值可变
C (const int* const a;等价于int * const a const;)或int const* const a;//a和*a都是const,常量和指针的值都不能改变
三.应用在函数参数
在一个函数声明中,const可以修饰形参,表明它是一个输入参数,