C Primer Plus

C语言中const使用方法总结

2020-01-11  本文已影响0人  桐桑入梦

1.使用const创建一个变量,这个变量不可修改

const int pi = 3.14;

2.使用const创建一个保护数组(数组内容不可以进行修改)

#define SIZE 3;
...
const int A[SIZE]={1,2,3};

下面语句导致产生编译错误:

A[1]=10;

3.修饰用来指向const数据的指针(const指针也可以指向非const数据,但是从这个指针的角度看,数据是const的,不可以修改,实际上数据不一定是const的)

double B[5]={  1.1,   2.2,    3.3,   4.4,   5.5   };
const double *p = B;

指向const数据的指针不能用来改变值,以下的操作都是不允许的

*p = 1.0;
p[2] = 3.0;

这里const指针指向数据实际上是非const数据,故下面操作允许

B[0]=1.0;
B[2]=3.0;

一般指向const的指针用于函数的形式参数当中,表明该函数不会使用指针改变数据

void test(const int * a,int n);

把const数据或者非const数据的地址初始化为指向const的指针或者为其赋值是合法的

const int A[3]={1,2,3};
int B[3]={4,5,6};
const int *p = A;
p = B;
p = &B[2];

但是,不能把const数据的地址赋值给普通的指针,指针赋值给const指针。否则,通过这个普通的指针就能改变const数组中数据。
eg.使用非const标识符修改const数据会导致未知的结果

const int a[3]={1,2,3};
int  sum(int b[],int n){ ... }
...
int s = sum(a,3);//这里会导致未知的结果

4.可以声明并初始化一个不能指向别处的指针,关键是const的位置。可以使用这种指针修改它指向的值,但是它只能指向初始化设置的地址。

int a[3]={1,2,3};
int * const p = a;
p = &a[1];   //不允许,因为该指针不能指向别处
*p= 0;   //可以

5.在创建指针的时候可以使用两次const,该指针即不能更改它指向的地址,也不能修改指向地址的值。

int b[3]={1,2,3};
const int * const p=b;
p = &b[1];  //error
*p = 4;       //error
上一篇 下一篇

猜你喜欢

热点阅读