c++-const int a=10; int *p =(int *)(&a);

问题描述

const int a=10; int *p =(int *)(&a);

#include
using namespace std ;
int main ()
{
const int a=10;
int *p =(int *)(&a);//运行正常
为什么 int *p = &a 报错
cannot convert from 'const int *' to 'int *'

解决方案

因为是const int *,传给int *必须类型转换。之所以有这样的规定是为了防止程序员忘记这是const的,造成错误。

解决方案二:

const int a = 10; int *p = (int *)&a; *p = 100; a的值到底有没有改变

解决方案三:

你这是实验,还是挑战C++系统?
C++
const 代表不可改变
const int a=10 ;表示 a 是常量,值为常量表达式 10;
int *p =(int *)(&a);//虽然运行正常,但是造成程序行为分裂,不是好的风格
int*p= &a ;类型不匹配,所以错误。

解决方案四:

类型不匹配cannot convert from 'const int *' to 'int *'

时间: 2024-10-11 19:13:28

c++-const int a=10; int *p =(int *)(&a);的相关文章

2009-05-21 10:32 c++ int/string转换

1. int to string 一.使用atoi 说明: itoa(   int   value,   char   *string,   int   radix   );       第一个参数:你要转化的int;       第二个参数:转化后的char*;       第三个参数:你要转化的进制;   举例: //------------------------------------- //功能:C++ int 转 string (使用atoi) //环境:VS2005 //-----

C#陷阱:int i = 10; i += i++; i = ?

参加某公司的笔试时的一道题目:int i = 10; i += i++; i = ?.当时我写了21.但当我在C#中写了如下代码测试时 static void Main(string[] args) { int i = 10; i += i++; Console.WriteLine(i); Console.Read(); } 编译器告诉我,结果是20.为什么!我错了吗?我开始纳闷了.我赶紧用VC(Visual Studio.net2003)重新编了一段测试代码,如下: int _tmain(){

c++中 int十进制数如何转int 16进制数

问题描述 c++中 int十进制数如何转int 16进制数 例如,我有int a = 100:但是我要获得int b = 0x100:如何把a转换成b. 解决方案 你这个只能是转成16进制字符串,如果是数值的话,你可以直接这样写,在内存中,不管什么进制,都是以二进制表示 解决方案二: int转6位16进制数. 解决方案三: 不妨看看 char *itoa( int value, char *string,int radix); 第三个参数是进制 解决方案四: 可以先转换成字符串,然后通过字符串再

c# 里面 int a=7,b=8;int c=a<<4;d=c&b;问什么 输出d 为0?

问题描述 如题球高手解释? 解决方案 解决方案二:不显示删除回复显示所有回复显示星级回复显示得分回复c#里面inta=7,b=8;intc=a<<4;d=c&b;问什么输出d为0?[问题点数:40分]c=a<<4.a111<<4=1110000b=1000.0001000与运算会吧,上面两个结果与肯定是0解决方案三:<<左移运算符(<<)将第一个操作数向左移动第二个操作数指定的位数n<<4,相当于n*1601110000100

一方面:int是值类型,int a 定义在栈上;另一方面int又继承自Object类,是个类,类的对象应该在堆上

问题描述 ①inta=newint();这种写法,a中存储的是地址吗?②有人说,int是个静态类,所以可以inta:这个说法对吗?③版主说,int是值类型,在编译的时候会自动进行装箱拆箱,请问inta=10在编译时会被装箱成对象吗(如果这样岂不是更复杂了)?④一方面:int是值类型,inta定义在栈上:另一方面int又继承自Object类,是个类,类的对象应该在堆上.这不是矛盾嘛? 解决方案 解决方案二:引用楼主sshziliao3的回复: ①inta=newint();这种写法,a中存储的是地

微信 string int byte-非数字string 转 int(32位非零),传给另一方,在转回到原string,求助

问题描述 非数字string 转 int(32位非零),传给另一方,在转回到原string,求助 非数字string 转成 int(32位非零),传给另一方,在转回到原string,求助 : 我尝试了 string--byte[]--int32 然后 int32--byte[]--string的转换,结果只得到原string的前几位 代码 string scene_id = "SYSTEM000000000000018428#0000000001"; byte[] myBytes =

int i=1,j=2; int k=i+++j;

因为运算符优先级为++大于+ 所以第二条语句应该是k=(i++)+j 分解为下面的步骤 1.i+j;(由于i++是先使用i值在表达式中进行运算,再自加1) 2.k=第1步的结果3; 3.i++;(i从1自加为2) 这样,再深究一点: 为什么 j=++i+++i+++i 输出j是10? j=(++i)+(++i)+(++i)=(((++i)+(++i))+(++i)) 计算机在计算j=(a+b)+(c+d)+(e+f)先计算(a+b)+(c+d),并把结果存储(例如:存储在j中),然后再计算j+(

指针-C++中利用子函数交换main()中的一个int数组的值,交换地址为什么不可?

问题描述 C++中利用子函数交换main()中的一个int数组的值,交换地址为什么不可? 某书思考题 只改动子函数 实现主函数中数组排序我写了3种子函数 注释的都是可以正常用的 最上面的不可以(排序没变)不知道是为啥(指针不是代表地址吗 既然形参无法传回那我改变地址应该也可以啊) #include<iostream>#include<iomanip>#include<cstdlib> //pauseusing namespace std;//排序不变void swap(

Java基础-10总结形式参数,包,修饰符,内部类

你需要的是什么,直接评论留言. 获取更多资源加微信公众号"Java帮帮" (是公众号,不是微信好友哦) 还有"Java帮帮"今日头条号,技术文章与新闻,每日更新,欢迎阅读 学习交流请加Java帮帮交流QQ群553841695 分享是一种美德,分享更快乐! 类,抽象类,接口的综合小练习 /* 教练和运动员案例(学生分析然后讲解) 乒乓球运动员和篮球运动员. 乒乓球教练和篮球教练. 为了出国交流,跟乒乓球相关的人员都需要学习英语. 请用所学知识: 分析,这个案例中有哪些