const的用法详解(C语言)

const的用法(C语言)




目录:

const的作用
const和指针的结合
const和引用的结合



(一)const的作用

const修饰的量为一个常量即不能被修改的量

         如:int a=10;指定义了一个变量a并初始化为10,但是后面可以对a的值进行修改。
        但是 const int a = 10;指的是定义了一个常量10,后面并不能被修改。

注意:
         在C语言(C89)中的const可以不初始化但后续也就无法对其赋值,所以尽管不初始化不会出错。但要使用const修饰的量就需要对其进行初始化。另外,既然const修饰的量为一常量那么const修饰的量能不能用作数组的下标?


    const int a = 10;
    int array[a] = {0};//编译不通过

//error C2057: 应输入常量表达式

所以:C语言中const修饰的量为一个常变量不是常量

(二)const和指针的结合

const int *p;        修饰int*p 所指向的内容无法改变
int const *p;        修饰int*p 所指向的内容无法改变
int *const p;        修饰int**p  不能改变指向
const int *const p;  修饰intint*  指向和所指向的内容都不能改变

1.修饰指针是的定义

const int a=10;
*p=&a;

         此时编译不通过,a现在等于是常量,常量的地址不能赋值给指针,所以要改为:

const int a=10;
const *p=&a;

2.const   int * p   型及   int   const *   p型

修饰int为常量,*p所指向的内容无法改变
int a=10;

const int *p=&a;
*p=100;//程序编译不通过,因为*p被const修饰不能更改
p=&b;//可以通过,表示p可以指向别的空间,但是要注意的是,指向b之后,*还是不能改变

3.int   * const  p   型

修饰int* 即   p  不能改变指向
int a=10;
int * const p=&a;

*p=100;//可以通过
p=&b;//不能通过,表示p不可以指向别的空间

4. const  int  *  const p   型

 修饰int和int*  指向和所指向的内容都不能改变
 int a=10;

i

nt * const p=&a;

*p=100;//程序编译不通过,因为*p被const修饰不能更改
p=&b;//不能通过,表示p不可以指向别的空间

(三)const和引用的结合

1.  a为变量。

int a=10;
const int &b=a;

a=100;//将a的值改为100
b=100;//编译不通过,因为b为常变量,不能修改

2.  a为const修饰的常量

const int a=10;
int &b=a;//编译不通过,只能引用变量
const int &b=a;//编译通过

a=100;//编译不通过
b=100;//编译不通过,因为b为常变量,不能修改

文章系本人原创,转载请注明作者和出处。

猜你喜欢

转载自blog.csdn.net/xiaomu_Y/article/details/106343928