一.C语言中的const 数组
const是C语言中保留的一个关键字,它用来限定一个变量是只读的,即不可变的。程序中使用const能够在必定程度上提升程序的健壮性,可是程序中使用过多的const,可能在对代码的阅读时增长必定的难度。函数
1)用const修饰通常变量spa
注意在C语言中,用const修饰的变量必须在声明时进行初始化(用来修饰函数的形参除外);指针
如:code
const int n; 这种声明方式是错误的对象
const int n=5; 正确blog
void fun(const int n); 正确作用域
const char a; 错误class
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
C语言时代的static 在C语言中,只存在函数和变量。 A、函数和全局变量,一旦加上static关键字,就限制了其做用域为本文件有效。 B、局部变量,一旦加上static关键字,其生命其为整个应用程序。 C++语言时代的static 在C++语言中,除了向C语言兼容外,提供了类的支持,一样static在C语言的特性在C++一样有效。 C、类的static关键字,在C++的类中,static只能用于修饰数据成员和函数成员(不能修饰构造函数和析构函数),用于该类所具备的信息而不属具体某个对象. D、<注意>若是在类的成员函数中定义了static局部变量,其值会在全部对象中共享!这一点很差!