const 与static 关键词在c 和 c++中的作用

一.C语言中的const

const是C语言中保留的一个关键字,它用来限定一个变量是只读的,即不可变的。程序中使用const可以在一定程度上提高程序的健壮性,但是程序中使用过多的const,可能在对代码的阅读时增加一定的难度。

1)用const修饰一般变量

注意在C语言中,用const修饰的变量必须在声明时进行初始化(用来修饰函数的形参除外);

如:

const int n; 这种声明方式是错误的

const int n=5; 正确

void fun(const int n); 正确

const char a; 错误

char * const p; 错误

const char *p;正确(注意这种为什么是正确的),因为这里const是修饰p指向的变量,而不是指针变量p本身

一旦一个变量被const修饰后,在程序中除初始化外对这个变量进行的赋值都是错误的。

如:

const int n=5;

n=3; 错误

(2)const与指针搭配使用

首先必须弄清楚两个基础概念:指针常量和常量指针

指针常量:即指针本身的值是不可改变的,而指针指向的变量的值是可以改变的;

常量指针:即指针指向的变量的值是不可改变的,而指针本身的值是可以改变的;

二.C++中的const

C语言和C++中的const有很大区别。在C语言中用const修饰的变量仍然是一个变量;而在C++中用const修饰过后,就变成常量了。

如:

const int n=5;int a[n];

这种方式在C语言中会报错,原因在于声明数组时数组的长度必须为一个constant,即常量,虽然n用const限定了,但n终究是一个变量,因此会报错;

但是在C++中不会报错,因为在C++中用const修饰过后,n就已经等同于一个常量了,因此可以通过。


三. 有关 static 关键词

1. C语言时代的static

在C语言中,只存在函数和变量。

A、函数和全局变量,一旦加上static关键字,就限制了其作用域为本文件有效。
B、局部变量,一旦加上static关键字,其生命其为整个应用程序。

2. C++语言时代的static

在C++语言中,除了向C语言兼容外,提供了类的支持,同样static在C语言的特性在C++同样有效。

A. 类的static关键字,在C++的类中,static只能用于修饰数据成员和函数成员(不能修饰构造函数和析构函数),用于该类所具有的信息而不属具体某个对象.

B. <注意>如果在类的成员函数中定义了static局部变量,其值会在所有对象中共享!这一点不好!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值