关键字static的作用是什么?
这个简单的问题很少有人能回答完全。在语言中,关键字有三个明显的作用:
在函数体内变量的作用范围为该函数体,不同于变量,该变量的内存只被分配一次一个
被声明为静态的变量在这一函数被调用过程中维持其值不变其值在下次调用时仍维持上次的值。
在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模
块外其它函数访问。它是一个本地的全局变量。
在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限
制在声明它的模块的本地范围内使用。
static 在 C 中主要用于定义全局静态变量、 定义局部静态变量、 定义静态函数。
静态函数:声明为静态函数不能被其他源文件所调用,只能被本源文件调用。
在 C++中新增了两种作用:定义静态数据成员、静态函数成员。
注意:因为 static 定义的变量分配在静态区,所以其定义的变量的默认值为 0,普通
变量的默认值为随机数,在定义指针变量时要特别注意。
关键字volatile有什么含意并给出三个不同的例子。
一个定义为的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变
量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使
用保存在寄存器里的备份。下面是变量的几个例子:
并行设备的硬件寄存器(如:状态寄存器)
一个中断服务子程序中会访问到的非自动变量
多线程应用中被几个任务共享的变量
一个指针可以是volatile 吗?解释为什么。
可以,因为指针和普通变量一样,有时也有变化程序的不可控性。常见例:子中断服务子程序修改
一个指向一个的指针时,必须用来修饰这个指针。又例:指向一个地址被线程使用,
线程修改了所指的地址,同时希望线程使用新地址,设置。
说明:指针是一种普通的变量,从访问上没有什么不同于其他变量的特性。其保存的数值是个整型
数据,和整型变量不同的是,这个整型数据指向的是一段内存地址。
一个参数既可以是还可以是吗?解释为什么。
extern 有什么作用
标识的变量或者函数声明其定义在别的文件中,提示编译器遇到此变量和函数
时在其它模块中寻找其定义。
const关键字至少有下列个作用:
()欲阻止一个变量被改变,可以使用关键字。在定义该变量时,通常需要对它进行初始
化,因为以后就没有机会再去改变它了;
()对指针来说,可以指定指针本身为,也可以指定指针所指的数据为,或二者同时指定
为;
()在一个函数声明中,可以修饰形参,表明它是一个输入参数,在函数内部不能改变其值;
()对于类的成员函数,若指定其为类型,则表明其是一个常函数,不能修改类的成员变量;
! char * const p char const * p const char *p 上述三个有什么区别?
答案: "#$%&&常量指针,$的值不可以修改
评论0
最新资源