一、以const修饰词限制指针变量
const放的位置不同,将会产生对指针变量不同的效果。下面来介绍一下。
第一种:
const 数据类型 * 指针变量名称
数据类型 const * 指针变量名称
产生的效果是不能够修改指针所指向的内存空间内的数据,但是可以修改指针所指向的地址。
例如:
int i=2;
int const *p;
p=&i;//可以
*p=5;//不行
第二种:
数据类型 * const 指针变量名称
产生的效果是不能够修改指针所指向的地址,但是可以修改指针所指向内存空间的数据。
既然指针值在程序中不可被更改,也就是说必须在声明指针的时候,完成地址值的初始。
例如:
int i=2;
int j=3;
int * const p=&i;
p=&j;//不行
*p=5;//可以
第三种:
const 数据类型 * const 指针变量名称
产生的效果同时限制不可修改指针值与所指向地址的存储值。
例如:
int i=2;
int j=3;
const int * const p=&i;
p=&j;//不行
*p=5;//不行
二、const修饰词应用指针的指针
指针的指针变量存储的是指针的地址。
第一种:
const 数据类型 ** 指针变量名称
数据类型 const ** 指针变量名称
产生效果是限制不可修改最后所存储的变量值。
例如:
const int i=2;
const int j=3;
const int *pi=&i,*pj=&j;//指针变量的声明
const int **ppi=π//指针的指针的声明
**ppi=j;//不行
*ppi=pj;//可以
ppi=&pj;//可以
第二种:
数据类型 * const * 指针的指针变量名称
产生的效果是限制不可修改指针的指针所指向的指针地址。
例如:
const int i=2;
const int j=3;
const int *pi=&i,*pj=&j;
const int **ppi=π
**ppi=j;//可以
*ppi=pj;//不行
ppi=&pj;//可以
第三种:
数据类型 ** const 指针的指针变量名称
产生的效果限制不可修改指针的指针的地址。
例如:
const int i=2;
const int j=3;
const int *pi=&i,*pj=&j;
const int **ppi=π
**ppi=j;//可以
*ppi=pj;//可以
ppi=&pj;//不行