指针问题,求大佬解决。
#include<stdio.h>#include<stdlib.h>
int main()
{
int *ap, *bp, temp, m1, m2; //输入两个数,从大到小打印出来。
scanf("%d%d", &m1, &m2 );
ap = &m1;
bp = &m2;
if ( m1 < m2 ) // int *temp;
{ // *temp = *bp;
temp = *bp; // *bp = *ap;
*bp = *ap; // *ap = *temp;
*ap = temp; //
}
printf("%d,%d", *ap, *bp );
system("pause");
return 0;
}
为什么像注释里这样把指针变量当作中间值进行转换 结果不正确呢?麻烦解释的通俗点,谢谢了。 temp 指向谁?野指针,看编译器,如果没有初始化的指针通常会指向空,空指针不能解引用 附议楼上,而且注释里面temp那个指针没有指向合法的安全的可访问的数据空间。
claws0n 发表于 2018-10-31 11:49
temp 指向谁?野指针,看编译器,如果没有初始化的指针通常会指向空,空指针不能解引用
那也就是说野指针一般不能引用对吧,应该先让他指明一个地址然后引用是吗? otottfyx 发表于 2018-10-31 13:03
那也就是说野指针一般不能引用对吧,应该先让他指明一个地址然后引用是吗?
野指针可以解引用,但后果自负。空指针解引用的话会退出程序或者执行错误。
嗯,可以,但是你不如直接开个临时变量 int temp 就好? claws0n 发表于 2018-10-31 13:14
野指针可以解引用,但后果自负。空指针解引用的话会退出程序或者执行错误。
嗯,可以,但是你不如直接开 ...
嗯,我懂了。谢谢你。
页:
[1]