c++ 中,int i=10;int *ip=&i;和int *ip=i;相比,为什么前者正确后者错误?
答案:4 悬赏:40
解决时间 2021-01-05 17:00
- 提问者网友:藍了天白赴美
- 2021-01-04 21:14
c++ 中,int i=10;int *ip=&i;和int *ip=i;相比,为什么前者正确后者错误?
最佳答案
- 二级知识专家网友:举杯邀酒敬孤独
- 2021-01-04 22:41
因为int *ip;这样声明的ip是int *型指针,需要用一个无符号整数为它赋值,而i是有称号int型变量,所以=号左右类型不匹配,故后者错误。前者由&i取返回了i的地址,类型就匹配了。
全部回答
- 1楼网友:白昼之月
- 2021-01-05 00:26
把后者改成:
int ival = 42;
int i = 1;
int *ip= &ival ;
*ip = i;
可以运行成。原理后两个答案已经说明
int ival = 42;
int i = 1;
int *ip= &ival ;
*ip = i;
可以运行成。原理后两个答案已经说明
- 2楼网友:掌灯师
- 2021-01-04 23:30
一个指针是要指向一个地址的,计算机使用指针时先找到指针所指向的地址,然后可以得到地址内的值。*ip中ip就是这个指针的地址,*ip表示这个地址内的值。当定义一个指针时就要让它指向一个地址,也就是将一个地址赋值给他。那个正确的int *ip=&i可以分解成int *ip;ip=&i;
如果不让指针指向地址,而直接给*ip赋值=i的话,运行时想获取*ip所指向地址内的值,就会先找指向的地址,结果发现并没有任何地址,自然出错了。
如果不让指针指向地址,而直接给*ip赋值=i的话,运行时想获取*ip所指向地址内的值,就会先找指向的地址,结果发现并没有任何地址,自然出错了。
- 3楼网友:神也偏爱
- 2021-01-04 23:07
变量ip是个指针, &i才是地址值, 才能赋值给指针
你是把 int *ip=i 和 int *ip; *ip=i 搞混了吧
你是把 int *ip=i 和 int *ip; *ip=i 搞混了吧
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯