因为初始化a的时候是用const修饰的,默认告诉编译器a的值不需要也不能修改,所以取a的地址付给一个非const的指针,编译器会认为你将会通过此指针不小心改变a的值,所以报错提醒无法将一个const指针赋给非const指针。如果非要赋值给非const指针,加上 int* p =(int*)&a 实现强制类型转换。
在这里解释一下上述代码:第二行代码,使用了const(expression),显示转换,这是由于c++比c类型转换更严格。所以需要将 const int * 转换为 int * 才能够进行赋值,并且第二行代码将被隐式转换为如下代码: int temp=a; int *ptr=&temp; //所以对指针 ptr 指向的内存空间进行操作,并不会影响到 a。 对于基本类...
如果我们定义了一个非const的变量,却使用了一个指向const值的指针来指向它(这不是没事找事嘛),在程序的某处我们想改变这个变量的值了,但手头只持有指针,这是const_cast就可以用到了: intmain() {intconstant =26;constint* const_p = &constant;int* modifier = const_cast<int*>(const_p);*modifier =3...
a.const int fun1() //这个事实上无意义,由于參数返回本身就是赋值。 b. const int * fun2() //调用时 const int *pValue = fun2(); //我们能够把fun2()看作成一个变量,即指针内容不可变。 c.int* const fun3() //调用时 int * const pValue = fun2(); //我们能够把fun2()看作成一个...
(转)const参数,const返回值与const函数,49320103100716140/ 在C++程序中,经常用const来限制对一个对象的操作,例如,将一个变量定义为const的: const int n=3;则这个变量的值不能被修改,即不能对变量赋值。 const...
int main() { PTR_TO_ARR parr = str; PTR_TO_FUNC pfunc = max; int i; printf("max: %d\n", (*pfunc)(10, 20)); for (i = 0; i < 6; i++) { printf("str[%d]: %s\n", i, *(parr + i)); } return 0; } 4、运行结果如下: ...
#include<iostream>usingnamespacestd;constintCmf(){return1;}intCpf(){return0;}intmain(void){int_m=Cmf();int_n=Cpf();cout<<_m<<""<<_n;system("pause");return0;} B: const 修饰自定义类型的作为返回值,此时返回的值不能作为左值使用,既不能被赋值,也不能被修改。
另外提示一点,如果你把 const 放在 int 和 * 之间,那它的功能和第一种情况一样的。 当然,我们可以同时写两个 const 。 这意味着我不能改变指针指向的内容,同时也不能改变这个指针本身。 这就是 const 的第二种用法,当你处理指针时,可以是指针本身,或者是指针指向的内容。当你把 const 放在声明的某处,是有...
2、 QString 转换为 int类型 基数默认为10,基数须在2到36之间; Qstring str="FF";bool ok;int dec=str.toInt(&ok,10); //dec=255 ; ok=true //QString 转 intint hex =str.toInt(&ok,16); //hex=255;ok=true; //QString 转 int ...