otottfyx 发表于 2018-10-31 11:18:26

指针问题,求大佬解决。

#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;
        }

为什么像注释里这样把指针变量当作中间值进行转换 结果不正确呢?麻烦解释的通俗点,谢谢了。

claws0n 发表于 2018-10-31 11:49:13

temp 指向谁?野指针,看编译器,如果没有初始化的指针通常会指向空,空指针不能解引用

风扫地 发表于 2018-10-31 12:32:54

附议楼上,而且注释里面temp那个指针没有指向合法的安全的可访问的数据空间。

otottfyx 发表于 2018-10-31 13:03:22

claws0n 发表于 2018-10-31 11:49
temp 指向谁?野指针,看编译器,如果没有初始化的指针通常会指向空,空指针不能解引用

那也就是说野指针一般不能引用对吧,应该先让他指明一个地址然后引用是吗?

claws0n 发表于 2018-10-31 13:14:40

otottfyx 发表于 2018-10-31 13:03
那也就是说野指针一般不能引用对吧,应该先让他指明一个地址然后引用是吗?

野指针可以解引用,但后果自负。空指针解引用的话会退出程序或者执行错误。
嗯,可以,但是你不如直接开个临时变量 int temp 就好?

otottfyx 发表于 2018-10-31 13:18:25

claws0n 发表于 2018-10-31 13:14
野指针可以解引用,但后果自负。空指针解引用的话会退出程序或者执行错误。
嗯,可以,但是你不如直接开 ...

嗯,我懂了。谢谢你。
页: [1]
查看完整版本: 指针问题,求大佬解决。