在vc++6.0里面报错,但是在dev++里面能运行。怎么回事啊?题目是结合指针、自定义函数来实现两数的互换。
这个问题是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)应该就都能编译运行了!
希望对你有帮助哈!