#include<stdio.h>
#include<stdlib.h>
//const int *p
//int const *p
//int * const p
//const int *const p
//int const * const p
//const在*左边,指向的是一个常量
//const在*右边,指针是一个常量
void main()
{
int num = 10;
num = 20;
const int data = 10;//只有初始化的时候可以赋值
//data = 20;//报错
const int *p = &data;//p是指向常量的指针,只能读不能改写
p = #
//*p = 3;//报错,提示左值不可修改
const int *a = 0;
const int b = 1;
int c = 1;
a = &b; //ok! 额外:注意不能通过a 来修改 b值
a = &c;//ok! 额外:虽然c本身不是一个常量
//*a = 2; //erro! 为题就在这里,不能修改通过 *a 所指向的对象值,最后赋值得对象是c,因此不能通过*a 来修改c值。
int *const a;
//这里const修饰的是 a ,a代表的是一个指针地址
//因此不能赋给a其他的地址值,但可以修改a指向的值
//这有点和cont int *a相反的意味,例子就不说了
int const *a;
//和 const int *a 的意义是相同的 他们两个的作用等价
const int * const a;
//这个代表a所指向的对象的值以及它的地址本身都不能被改变
const int *const a;
//a所指向的对象及对象的值均不可改变。
//关于const的点滴补充:
// 1、const 对象的地址只能赋值给指向const 对象的指针
// 2、指向const 对象的指针可以 被赋 以 一个非const 对象的地址
// 3、指向const 得指针常被用作函数的形式参数,保证被传递给函数的实际对象在函数得实际对象在函数中不会被修改
// 4、常量在定义后就不能被修改, 所以它必须被初始化。未初始化的常量定义将导致编译错误(上面都是在说明const得问题,所以没有赋值,实际语句中要赋值的)
}
const
最新推荐文章于 2022-07-21 20:21:39 发布