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