C++关于const用法的选择题,求高手指教

选出错误答案
A)const int buffer = 256;
B)const int temp;
C)const double *point;
D)double * const pt = new double(5.5);
我认为const必须初始化,所以B、C错了,但是D我又看不懂,总感觉const应该放在前面,请高手不吝赐教,多谢!

B错了
CD正确的,
C选项 *point的值不能改变,比如
int i=10;
point=&i;
*point=11; //错误,*point的值是不能改变的,但是point可以改变指向,如 int k=12; point=&k;
D选项pt指向不能改变
int i=10;
double *const pt=&i;
*pi=11; //正确,可以用pi指针改变 i 的值
int k=11;
pi=&k; //错误,pi只能指向i,不能改变指向

还有const是采用就近原则的

const int *p;
int const *p;
int * const p;
一二是一样的,const都是限制了int的,三是限制 p 的
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-06-29
D是const类型的指针。
将const放在指针变量的“*”之后。表示指针变量的值是一个常量。不能改变指针变量的值,可以改变指针变量所指向的数据值。定义时必须赋初值。例如:
int n=5,i; int *const pn=&n;
*pn=25; //正确
pn=&i; //错误
D是正确的,在这C也是正确的,B是错误的。
第2个回答  2011-06-29
B错的。
D的意思是pt是常量,pt不能再被赋值,即pt=0;非法!其实const很好理解,就const是后面的表达式(*p,p等)不能再赋值,即const char *p=0;中,*p=t就是错的!
char * const p=0;
p=t;就是错的
第3个回答  2011-06-29
B)const int temp;
这个是错误的。常值指针不需要初始化,常值变量必须初始化。
结论经过测试。
第4个回答  2011-06-29
B错了,常数没有初始化
C每次,以cosnt为分界*point在一边说明指针是可以变的,指针的内容不能变,所以不赋初始值可以

C++中运算符重载问题,分别说明下面const的作用以及为什么要用引用_百 ...
函数中使用CONST(1)const修饰函数参数 a.传递过来的参数在函数内不可以改变(无意义,因为Var本身就是形参)void function(const int Var); b.参数指针所指内容为常量不可变void function(const char* Var); c.参数指针本身为常量不可变(也无意义,因为char* Var也是形参)void function(char* const Var...

C++ const_cast的一个问题
你第一代码运行的结果是因为通过a读取的值不是来自内存,可能来自缓存或者寄存器。const关键字在C++用于定义编译时或者运行时的常量,常量意味着它的值是不会变,所以编译器可以对此进行优化,将它的值直接放到高速缓存或者寄存器中,从而避免直接在内存中读取常量的值的开销。第二段代码,你将变量放入了结构...

关于C++中的const问题
1.》》const与define。两者都可以用来定义常量,但是const定义时,定义了常量的类型,所以更精确一些。#define只是简单的文本替换,除了可以定义常量外,还可以用来定义一些简单的函数,有点类似内置函数。const和define定义的常量可以放在头文件里面。(小注:可以多次声明,但只能定义一次)2.》》const与指针...

C++单选题:定义类A的成员函数A* f(A a)const时,下列哪个适合作为函数的...
A答案: 参数(A a) 是个复制到函数内的局部变量。所以返回一个局部变量的指针,是不可以的。因为函数内局部变量在函数调用结束之后会被释放。B答案: 类A中定义的类型为A*的静态数据成员, 这个是可以的。因为它不受任何限制。所谓static变量,无论是不是在类中,他都是存在程序的全局静态表中。所以...

C++中const的强大用法:修饰函数参数\/返回值\/函数体
在C++中,const主要用于保护数据不被意外修改。除修饰常量外,还用于修饰函数参数、返回值和函数体,以提升程序健壮性。const修饰函数参数,可保护参数不被函数内部意外修改。例如,对变量a和b添加const修饰后,函数内尝试修改a或b会导致编译错误。const修饰函数返回值,确保返回值不可被修改。如使用const...

C++ const 用法
const int* a = & [1]int const *a = & [2]int* const a = & [3]const int* const a = & [4]可以参考《Effective c++》Item21上的做法,如果const位于星号的左侧,则const就是用来修饰指针所指向的变量,即指针指向为常量;如果const位于星号的右侧,const就是修饰指针本身,即指针本身是...

c++ const 和指针问题
const int *pa;pa=&a;pa=200; \/\/错误,不能修改指向常量指针所指的对象 int b=*pa+100; \/\/正确,可以读指向常量指针的对象 三、指向常量的指针常量(比如 const int * const p)显而易见,就是前两者的合体。指针不能动,所指的对象也不能动。int a=100,b=200;const int * const...

c++关于 参数里面用const和&的问题。
const是一种编译过程中的保护机制,当你定义成const类型时,如果代码中出现试图修改相应的变量时,在编译阶段就会报错,而不是在运行时才出现异常。&是引用变量,或称为变量别名,这与是否有const没有关系,没有const时,代码可以修改变量内容,而有const时表示不能修改变量。&引用在传递对象参数时,可以...

C++中的const怎么使用?
如果const用于定义一个非指针的普通变量,就是定义了一个常变量,这个变量以后的值在生命期内是不能改变的,因此也必须对该变量进行初始化,在C++中要在类的初始化列表中初始化。如果const用于定义一个指针变量,不同的写法有不同的意思。例如const char *p和char* const p 前者表示p指向的内容是不...

总结C++中const的用法
先看第一种用法,这个const关键词表示在该成员函数中不可以对该类的数据成员m_arg进行修改。这就是const成员函数的意义。再看第二种用法,表示向该成员函数传递过来的int型引用不可以在成员函数中修改。这就是const参数的意义。static的用法:你首先要知道,一般的成员函数(也算就是不带有static修饰)...

相似回答