const int num = 5; num = 10; // 错误,num 的值不能修改const 也可以用来修饰指针变量,它既可以限制指针变量本身,也可以限制指针指向的数据。
类型 * const 指针变量名;例如:
int a; int * const p = &a;这样定义的指针 p,它的指向不能改变,比如说:
*p = 1; // 正确,修改指针指向的数据 int b; p = &b; // 错误,指针的指向不能改变因为不能修改指针的指向,所以在定义的时候必须为指针设置一个初值。下面的定义是错误的:
int * const p; // 错误,指针没有初值
const 类型 * 指针变量名; 类型 const * 指针变量名;例如:
const int *p; int const *p;在上面的定义中,* 表明 p 是一个指针变量,int 表明 p 是一个指向整型数据的指针,而 const 则限制指针不能修改它所指的数据。
int a = 0, b = 0; const int* pa = &a; // 定义 const 指针,令其指向 a。 pa = &b; // 正确,pa 的指向可以改变 *pa = 1; // 错误,pa 不能修改它指向的数据 b = 2; // 正确,变量 b 的指可以改变。在上面的代码中,试图修改 *pa 是错误的,因为 const 限制指针不能修改它所指的数据。
const 类型 * const 指针变量名;这是前面两种情况的组合,指针变量的指向不能改变,同时指针也不能修改它所指的数据。
int a = 0, b = 0; const int* const p = &a; *p = 1; // 错误,指针不能修改它所指的数据 p = &b; // 错误,指针的指向不能改变
本文链接:http://task.lmcjl.com/news/13400.html