c语言 哪里出问题了,帮帮我,这咋回事啊,、实验内容 编写程序并运行结合指针、自定义函数来实现两数 的互换。

在vc++6.0里面报错,但是在dev++里面能运行。怎么回事啊?题目是结合指针、自定义函数来实现两数的互换。

img

img

这个问题是VC++6.0编译器版本问题,把两个指针变量*p1 *p2 定义语句移动到函数开始的地方,就可以解决问题,如下,供参考:

#include <stdio.h>
void swap(int *pt1, int *pt2)
{
    int temp;
    temp = *pt1;
    *pt1 = *pt2;
    *pt2 =  temp;
}
void main()
{
    int a, b, *p1, *p2; // 将*p1 *p2定义在代码开始处
    scanf("%d%d", &a, &b);
    p1 = &a;
    p2 = &b;
    swap(p1,p2);
    printf("%d,%d", a, b);
}


程序本身没有问题,是编译器规则导致的!在vc++6.0里应该是不支持将指针作为函数输入,输入的必须是具体的参数、数组等!
把main函数里的两个指针定义注释掉,将swap(p1,p2)修改为swap(&a,&b)应该就都能编译运行了!
希望对你有帮助哈!

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^