为了账号安全,请及时绑定邮箱和手机立即绑定

关于C语言程序的几个问题

关于C语言程序的几个问题

C
by_Z 2015-08-31 20:57:02
(一)请问A选项里,void swpa(int *p,int *q)里的a并没有赋初值,那么&a合法吗?(二)请问B选项里哪里错了?
查看完整描述

4 回答

?
紫泉

TA贡献26条经验 获得超3个赞

你的第一个问题,int *t, a;   t  = &a;是没有问题的。其实这2句就是等价于 int *t = new int; t = &a;  如果不给t其指向的地址,直接 *t = *p就会出错,因为都不知道t指向哪儿,*t怎么得到。所以int*t 声明了一个指针后,再给指针t一个地址让其指向,这里的a是一个乱七八糟的数,我们的目的只要是一个存储int型占4个字节的地址就行了,至于这个地址里原来放的是什么乱七八糟的都无所谓,所以只要把a的地址给t就行,不用给a赋值。

查看完整回答
反对 回复 2015-09-01
?
紫泉

TA贡献26条经验 获得超3个赞

int *a;    *a = 10;是错误的,因为你没有给指针a申请空间,你只是声明了一个指针而已。然后并没有空间,所以不能给a指向的空间赋值,可以这样写。int *a = new int;    *a = 10就可以了。或是写成int *a = new int();    *a = 10;

或是写成int* a = new int(10);

查看完整回答
反对 回复 2015-09-01
?
紫泉

TA贡献26条经验 获得超3个赞

(一)和(二)都没有错误,(三)错了。

查看完整回答
反对 回复 2015-09-01
?
紫泉

TA贡献26条经验 获得超3个赞

。。。我真佩服你,你的理解能力。。

查看完整回答
反对 回复 2015-09-01
  • 4 回答
  • 0 关注
  • 1177 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信