(一)请问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赋值。
紫泉
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);
- 4 回答
- 0 关注
- 1177 浏览
添加回答
举报
0/150
提交
取消