您的位置:首页 > 其它

static和const关键字的作用

2017-03-27 00:00 316 查看
摘要: 读书笔记,记录分享

static的关键字的主要作用如下:

(1)函数体内,static变量的作用范围为该函数体,该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值。

(2)在模块内的static全局变量可以被模块内所有函数访问,但不能被模块外其他函数访问。

(3)在模块内的static函数只可被这一块模块的其他函数调用,这个函数的使用范围被限制在声明它的模块内。

static int i=0;
void fun1(){
i=0;
i++;
printf("i=%d\n",i);
}
void fun2(){
static int j=0;
j++;
printf("j=%d\n",j);
}
int main(int argc, const char * argv[]) {
// insert code here...
for (int i=0; i<5; i++) {
fun1();     // ---> i=1  i=1  i=1  i=1  i=1
fun2();     // ---> j=1  j=2  j=3  j=4  j=5
}
return 0;
}
/*
j被定义为局部静态变量,其值在每次函数结束时都被保留,所以结果都是上一次值加1
*/

const关键字的作用如下:

(1)欲阻止一个变量被改变,可以使用const关键字。在定义该const变量时,通常需要对它进行初始化,因为以后就没有机会再去改变它了。

const int a=0;
a=10;   //改行显示报错
/*
* const修饰的是只读变量,只读变量的值在定义后就不能再改变了
*/

(2)对指针来说,const可以指定指针本身-->指针常量(var * const p 指向不可变,所指内容可变)

//错误示范
int *const q=&a;
//  q=&b;

也可以指定指针所指的数据-->常量指针(var const *p 指向可变,所指内容不可变)

//错误示范
int const *p=&a;
//    *p=10;

也可以既指定指针本身又指定指针所指的数据(const var *const q 指向不可变,所指内容不可变)

//错误示范
const var *const p= &a;
//    *p=10;
//     p=&b;

注意:在定义const变量时,必须要对变量初始化,否则编译器会报错。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: