首先解释关键字const的含义?
下面语句:
const int a;
int const a;
const int *a;
int *const a;
int const* a const;
的意思?
谢谢!!
关键字const含义,解释下面各语句意思?
答案:4 悬赏:60 手机版
解决时间 2021-03-22 12:40
- 提问者网友:ミ烙印ゝ
- 2021-03-22 06:38
最佳答案
- 五星知识达人网友:罪歌
- 2021-03-22 07:57
const int a; //a的值不能被修改
int const a; //同上
const int *a;//a指向的值不能被修改
int *const a;//a表示的地址不能给修改
int const* a const; //a指向的值和a表示的地址都不能被修改
int const a; //同上
const int *a;//a指向的值不能被修改
int *const a;//a表示的地址不能给修改
int const* a const; //a指向的值和a表示的地址都不能被修改
全部回答
- 1楼网友:野慌
- 2021-03-22 11:01
① const对象和const类型的对象
对于这两个概念的描述如下
1. int const Object; //Object是一个const量是不可以被修改 Object = 2;Error
2. const int Object; //Object是 const int型他所存放的内容不可以被修改
对于1,2这两种const用于对象,表述虽然不同但是效果是一样的。因为对象本身存放着内容对对象的改变就是对于对象内容的改变,同样改变后者也是在改变前者。所以语义上一样的。
② const指针 和 指向const的指针 及两者结合
对于三个概念描述如下
1. int* const p; //指针p是const不能被修改 例如p++; //修改p本身会Error
//修改p指向内容 *p = 2; //OK
2. const int* p; //p是指向一个整形常量的指针指向的内容不可以改变 p++;//OK
// *p = 2; //Error
3. const int* const p; //指针p本身是不能被修改并且p所有有效的内容也不能被
//修改 *p = 2;Error和p++; Error
③ const 参数修饰 和 参数返回类型的const修饰
1.const 参数修饰
此时函数参数修饰 const的具体用法 ① ②中用法是一样的
例如 void Fun( const int I ) { I++;} //Error不能修改常量I
2.const修饰函数返回类型用法也是类似于 ①②中,仅仅修饰的对象变化变成一个返回对象
例如:const int Fun() {static int I; return I;}
int Res = (Fun())++ //Error不能修改常量返回对象
④ const类成员 和 const 成员函数
1. const成员
类const成员在构造期间会允许被初始化并且在以后不能被改变。我们就可以知道类const成员和一般const 变量是有所不同的,类const成员是对应于每个对象而言才有意义。因为他在构造期被初始化,只有当类实例化后才会进行构造。所以类const成员可以这样描述: 在类的每一次实例化时被初始化,在这个对象的生存周期中不可改变。
2. const 成员函数
描述: void Class::MemberFun() const {}; //此时这个const修饰的this所有类成员变量都不允许在这个函数体作用后被修改。这在设计上会带来一些好处,能防止你意外的处理带来的问题。
- 2楼网友:走死在岁月里
- 2021-03-22 09:40
const(constant的缩写) 的意思是常量。就是你定义的对象不能被修改,只能被引用,通常是一些常数、表格这样定义,还有就是对于在程序中只有读操作的缓冲区、数组,为防止程序出现漏洞被无意修改,也会定义一个const指针,指向这个缓冲区、数组,这样在程序中如果有对其进行修改的语句,编译会出现错误信息。
- 3楼网友:鱼忧
- 2021-03-22 08:45
constant 也就是常量的意思
1.修饰变量
如const int a =3;
常量a的值不能再修改
2.修饰指针
如 const char*p = 123;
p[0]='4'; 是错的, 字符串内容不允许改
char *const p = "123";
p ="456"; 是错误的, 指针不允许再指向其他地址
3.常引用
多用于参数, 防止参数被修改,引用是避免创建参数副本
void test( const struct A &a){}
4.常函数
就是类的成员函数,参数后面加个const, 此函数中不允许修改类的数据成员
void test() const
{}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯