概述
关键字static的作用是什么?这个简单的问题很少有人能回答完全。在C语言中,关键字static有三个明显的作用:
1、在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。
2、
在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所有函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。
3、在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。
大多数应试者能正确回答第一部分,一部分能正确回答第二部分,但是很少的人能懂得第三部分。做为一个合格的软件工程师,我们要懂得第三部分的作用,要懂得本地化数据和代码范围的好处和重要性。
int testStatic()
{
int x=1;
x++;
return x;
}
main()
{
int i;
for(i=0;i<5;i++)
printf("%dn",testStatic());
}
输出为:
2
2
2
2
2
int testStatic()
{
static int x=1;
x++;
return x;
}
main()
{
int i;
for(i=0;i<5;i++)
printf("%dn",testStatic());
}
输出为:
2
3
4
5
6
const
有什么用途?
(1)可以定义
const
常量
(2)const可以修饰函数的参数、返回值,甚至函数的定义体。被const修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。const意味着"只读"。区别如下代码的功能非常重要。
const int a;
int const a;
const int *a;
int * const a;
int const * a const;
前两个作用是一样的,a是一个常整型数。
第三个意味着a是一个指向常整型数的指针(也就是,整型数是不可修改的,但指针可以)。
第四个意思是a是一个指向整型数的常指针(也就是,指针指向的整型数是可以修改的,但指针是不可修改的)。
最后一个意味着a是一个指向常整型数的常指针(也就是,指针指向的整型数是不可修改的,同时指针也是不可修改的)。
(1)
关键字const的作用是为给读你代码的人传达非常有用的信息。例如,在函数的形参前添加const关键字意味着这个参数在函数体内不会被修改,属于"输
入参数"。在有多个形参的时候,函数的调用者可以凭借参数前是否有const关键字,清晰的辨别哪些是输入参数,哪些是可能的输出参数。
(2)合理地使用关键字const可以使编译器很自然地保护那些不希望被改变的参数,防止其被无意的代码修改,这样可以减少bug的出现。
const在C++语言中则包含了更丰富的含义,而在C语言中仅意味着:"只能读的普通变量",可以称其为"不能改变的变量"(这个说法似乎很拗口,
但却最准确的表达了C语言中const的本质),在编译阶段需要的常数仍然只能以#define宏定义!故在C语言中如下程序是非法的:
const int SIZE = 10;
char a[SIZE];
请解释volatile的含义?
volatile字面意思是易于挥发的。这个关键字来描述一个变量时,意味着给该变量赋值(写入)之后,马上再读取,写入的值与读取的值可能不一样,所以
说它"容易挥发"的。这是因为这个变量可能是一个寄存器,直接与外部设备相连,你写入之后,该寄存器也有可能被外部设备的写操作所改变;
或者,该变量被一个中断程序,或另一个进程改变了。volatile 不会被编译器优化影响。
最后
以上就是大力酸奶为你收集整理的查询关键字输出信息c语言,C语言关键字的全部内容,希望文章能够帮你解决查询关键字输出信息c语言,C语言关键字所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复