中易网

c++ 中,int i=10;int *ip=&i;和int *ip=i;相比,为什么前者正确后者错误?

答案:4  悬赏:40  
解决时间 2021-01-05 17:00
c++ 中,int i=10;int *ip=&i;和int *ip=i;相比,为什么前者正确后者错误?
最佳答案
因为int *ip;这样声明的ip是int *型指针,需要用一个无符号整数为它赋值,而i是有称号int型变量,所以=号左右类型不匹配,故后者错误。前者由&i取返回了i的地址,类型就匹配了。
全部回答
把后者改成:
int ival = 42;
int i = 1;
int *ip= &ival ;
*ip = i;
可以运行成。原理后两个答案已经说明
一个指针是要指向一个地址的,计算机使用指针时先找到指针所指向的地址,然后可以得到地址内的值。*ip中ip就是这个指针的地址,*ip表示这个地址内的值。当定义一个指针时就要让它指向一个地址,也就是将一个地址赋值给他。那个正确的int *ip=&i可以分解成int *ip;ip=&i;
如果不让指针指向地址,而直接给*ip赋值=i的话,运行时想获取*ip所指向地址内的值,就会先找指向的地址,结果发现并没有任何地址,自然出错了。
变量ip是个指针, &i才是地址值, 才能赋值给指针
你是把 int *ip=i 和 int *ip; *ip=i 搞混了吧
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
上海人死了开追悼会叫大礼?
中国为什么要加入到世贸组织
老公骂我,去死
DNF夏季发布会发布发布更新了什么内容
俄罗斯运动品牌比较有名的有哪些?
火石村地址好找么,我有些事要过去
姐姐跟弟弟放学回家作文怎么写
澳门回大陆。请问拱北口岸的最早是几点开始通
小高想要配制浓度为35%的盐水
6002轴承一般什么价格
专利问题。如果一个简单的技术申请了专利,那
求问与上海隔了一片海的地方是哪里!
美好分期整容贷款
yoyo切克now,的我的秘密中右手怎么弹,要每
平时同一站1小时转火车有问题吗
推荐资讯
dnf厄运之忆可以通过任务做几件?和
从牡丹江到海林林高路线
为什么人们去烈士陵园和墓地的感觉完全不同?
是累犯先有犯寻衅滋事罪自首可以取保候审吗
国庆想和同学去旅游,我们学校在湖南永州,由
gtaol和别人玩他们太坑了老死任务老失败怎么
前四后十货车的载重是多少
我只想知道要求几个面的面积是6个面?还是5个
替孩子多考虑真的无用
梁与梁、梁与墙、梁与柱交接时,按净空长度计
如何评价马丽在《夏洛特烦恼》中的演技?
购进原材料的分录
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?