出处;http://blog.csdn.net/bizhu12/article/details/6672723
const用法主要是防止定义的对象再次被修改,定义对象变量时要初始化变量
下面我就介绍一下几种常见的用法
1.用于定义常量变量,这样这个变量在后面就不可以再被修改
const int Val = 10;
//Val = 20; //错误,不可被修改
2. 保护传参时参数不被修改,如果使用引用传递参数或按地址传递参数给一个函数,在这个函数里这个参数的值若被修改,
则函数外部传进来的变量的值也发生改变,若想保护传进来的变量不被修改,可以使用const保护
void fun1(const int &val)
{
//val = 10; //出错
}
void fun2(int &val)
{
val = 10; //没有出错
}
void main()
{
int a = 2;
int b = 2;
fun1(a); //因为出错,这个函数结束时a的值还是2
fun2(b);//因为没有出错,函数结束时b的值为10
}
如果只想把值传给函数,而且这个不能被修改,则可以使用const保护变量,有人会问为什么不按值传递,按值传递还需要把这个值复制一遍,
而引用不需要,使用引用是为了提高效率//如果按值传递的话,没必要加const,那样根本没意义
3. 节约内存空间,
#define PI 3.14//使用#define宏
const double Pi = 3.14 //使用const,这时候Pi并没有放入内存中
double a = Pi; //这时候才为Pi分配内存,不过后面再有这样的定义也不会再分配内存
double b = PI; //编译时分配内存
double c = Pi; //不会再分配内存,
double d = PI; //编译时再分配内存
const定义的变量,系统只为它分配一次内存,而使用#define定义的常量宏,能分配好多次,这样const就很节约空间
4.类中使用const修饰函数防止修改非static类成员变量
class
{
public:
void fun() const //加const修饰
{
a = 10; //出错,不可修改非static变量
b = 10; //对,可以修改
}
private:
int a ;
static int b;
}
5.修饰指针
const int *A; 或 int const *A; //const修饰指向的对象,A可变,A指向的对象不可变
int *const A; //const修饰指针A, A不可变,A指向的对象可变
const int *const A; //指针A和A指向的对象都不可变
6.修饰函数返回值,防止返回值被改变
const int fun();
接收返回值的变量也必须加const
const int a = fun(); //接收的变量也要是const的,int a = fun()是错误的
7.修饰类的成员变量
使用const修饰的变量必须初始化,在类中又不能在定义时初始化,
如;
class
{
private:
int a = 10;
const int b = 10;
static const int c = 10;
//这样初始化都是错的,
}
初始化const int类型(没有static),在类的构造函数上初始化
Class Test
{
Public:
Test():b(23) //构造函数上初始化b的值为23
{
}
private:
const int b ;
}
初始化staticconst int这个类型的(带有static的),在类的外面初始化
class Test
{
private:
static const int c;
}
const int Test::c=10; //类的外部初始化c为10
8.const定义的对象变量只能作用于这个程序该C/C++文件,不能被该程序的其他C/C++文件调用,
如file1.cpp中 const int val;
在file2.cpp中, extern intval; //错误,无法调用,
要想const定义的对象变量能被其他文件调用,定义时必须使用extern修饰为
extern const int val;
非const变量默认为extern,要是const能被其他文件访问必须显示指定为extern
分享到:
相关推荐
### const用法总结(C++) #### 一、一般常量 在C++中,`const`关键字用于声明常量,这些常量在程序运行过程中不可更改。常量的声明有两种常见格式: 1. `const<类型说明符><变量名>=<常量或常量表达式>;` 2. `...
以下是`const`关键字的一些常见用法: 1. **定义常量**: `const`关键字可以用来声明常量,确保变量一旦赋值后就不能再更改。有两种常见的声明方式: - `TYPE const ValueName = value;` - `const TYPE ...
在本文中,我们将深入探讨`const`的用法以及常见的错误。 1. `const`作为变量修饰符: 当`const`修饰一个变量时,它表明该变量的值不能被修改。例如,`const int nc = 0;`声明了一个不可变的整型变量`nc`。尝试...
### const用法详解 在C++编程中,`const`关键字是极其重要的,它用于声明常量或指定对象的一部分为不可修改。...掌握`const`的用法不仅有助于避免常见的编程错误,还能提升代码的可读性和维护性。
Const 用法非常灵活,下面是常见的几个用法场景: 1. 使用 Const 关键字表明一个值或者指针在初始化后就不再被修改。 例如:`const int a = 5;` 或 `int * const p = &x;` 2. 使用 Const 关键字表明在该函数执行...
`const`最常见的用法 1. **防止函数参数被修改** 当我们需要传递一个数据给某个函数,但不希望该数据在函数内部被修改时,可以使用`const`关键字。这样做的好处是可以避免意外修改原始数据,提高代码的安全性。 ...
C语言中的const关键字是一个非常重要的概念,主要用于声明常量和指针,表明变量的值不能被修改。...同时,它也是面试或技术交流中常见的重点问题,理解const的不同用法对于任何C语言程序员来说都是基本功。
### const用法详解:深入解析C++中的常量与const关键字 在C++编程语言中,`const`关键字被广泛用于定义常量、保护数据不被意外修改以及提高代码的安全性和效率。本文将全面解析`const`的用法,包括其基本应用、高级...
有四种常见的用法: - `const`修饰指针内容:`const TYPE *pContent`,表示指针指向的内容是常量,不能通过指针修改。 - `const`修饰指针本身:`TYPE * const pContent`,表示指针变量本身不可变,但其指向的数据...
### C++中const的各种用法详解 #### 一、引言 `const`关键字在C++编程语言中扮演着至关重要的角色。它不仅能够帮助程序员更精确地控制代码的行为,还可以提高程序的安全性和效率。本文将详细介绍`const`在C++中的...
虽然`const`修饰函数返回值的应用不如修饰参数那么常见,但它依然有其作用。`const`可以用于返回指针或引用类型,确保使用者不会通过返回的指针或引用修改原始数据。例如: ```cpp const int *fun2(); ``` 此函数...
接下来,`const`可以与指针结合使用,有两种常见的形式: 1. `const`指针:指针指向的内容是不可变的。 ```c const int *p = &a; // p指向一个常量整型变量 ``` 在这个例子中,`p`是一个指向`int`的指针,但`p`所...
### const的理解和用法 在C++编程语言中,`const`关键字是非常重要的一个特性,它可以帮助程序员更好地控制代码中的变量、指针等资源的访问权限。本文将详细介绍`const`的基本概念、不同应用场景下的使用方法及其...
在编程领域中,`static`、`const`、`volatile` 这三个关键字非常常见且重要。它们分别用于控制变量的作用域、可变性和不可预测性,是理解程序行为的基础之一。下面将详细介绍这三个关键字的功能与用法。 #### 1. `...
本文将详细介绍`const`关键字的用法及其在不同场景下的应用。 #### 二、`const`关键字的基本概念 `const`关键字用于指定某个实体是常量,这意味着该实体一旦被赋值后就不能再被修改。它可以用来修饰变量、指针、...
`const` 在 C 语言中有多种应用场景,以下是一些常见的使用方法: ##### A. 防止函数参数被修改 当调用函数时,为了避免无意中修改传入的参数,可以在函数原型中使用 `const` 关键字。例如: ```c int FindNum...
本文将深入探讨`const`关键字的各种用法和其背后的原理,帮助读者更全面地理解和应用这一特性。 #### 一、基本常量声明 `const`关键字可以用来声明不会改变的常量。常量声明有两种常见的格式: ```cpp const ...
qsort 函数常见用法 qsort 函数是 C 语言标准库中的一种排序算法,用于对数组进行排序。它的原型如下: `void qsort(void *base, size_t num, size_t width, int (*cmp)(const void *, const void *))` 其中,`...