i你哟 发表于 2023-10-19 21:32:26

C++

void exchange(int *p1, int *p2);
int main()
{   
    int a=10 , b=30;
    void exchange(&a,&b);
        cout << a<< ' '<< b;
    return 0;
}
void exchange(int *p1, int *p2)
{
        int temp = 0;
        temp = *p1;
        *p2 = *p1;
        *p1 = temp;
}这个编译器说这里不允许使用不完整的类型,这里什么错了?谢谢

isdkz 发表于 2023-10-19 21:32:39

这个错误是因为在主函数中调用 exchange 函数的方式不正确。在C++中,函数调用不需要使用 void 关键字,而且函数名前不需要使用 & 符号。所以正确的调用方式应该是 exchange(&a, &b); 。

以下是修改后的代码:

#include <iostream>
using namespace std;

void exchange(int *p1, int *p2);

int main()
{
    int a = 10, b = 30;
    exchange(&a, &b);
    cout << a << ' ' << b;
    return 0;
}

void exchange(int *p1, int *p2)
{
    int temp = 0;
    temp = *p1;
    *p1 = *p2;
    *p2 = temp;
}


这样修改后,程序就能正确地交换变量 a 和 b 的值了。

Mike_python小 发表于 2023-10-19 21:33:45

在你的代码中,有一个问题在于 void exchange(&a,&b); 这一行代码的写法是错误的。应该改为 exchange(&a, &b);。另外,在 exchange 函数内部交换变量的时候,写成了 *p2 = *p1; *p1 = temp;,而实际上应该是 *p1 = *p2; *p2 = temp;。

下面是修改后的代码:


#include <iostream>
using namespace std;

void exchange(int *p1, int *p2);

int main()
{
    int a=10, b=30;
    exchange(&a, &b);
    cout << a << ' ' << b;
    return 0;
}

void exchange(int *p1, int *p2)
{
    int temp = *p1;
    *p1 = *p2;
    *p2 = temp;
}


运行结果为:


30 10


希望这个回答能够帮助到你!如果你还有其他问题,请随时提问。

球一个最佳答案谢谢啦!这对我非常重要!{:10_254:}{:10_254:}{:10_254:}
页: [1]
查看完整版本: C++