【问题标题】:Why do I get errors in this C++ program implementing Structures?为什么在这个实现结构的 C++ 程序中会出错?
【发布时间】:2015-06-30 01:19:45
【问题描述】:

为什么我在执行这个程序时会出错? 我在这里找不到任何问题。

#include <iostream>

using namespace std;

void exchange(point& p);

int main()
{
    struct point
    {
        int a, b;
    };

    point one = {1,2};

    exchange(one);
    cout << one.a << " , " << one.b;
    return 0;
}

void exchange(point& p)
{
    int temp;
    p.a = temp;
    p.a = p.b;
    p.b = temp;
}

我在另一个程序中也遇到错误,它以类似的方式实现结构。

【问题讨论】:

标签: c++ struct pass-by-reference


【解决方案1】:

在全局范围内没有符号point,它只定义在main函数内部而不是main外部。

在使用 exchange 原型中的符号之前,在全局范围内定义结构。

【讨论】:

    【解决方案2】:

    您必须在全局范围内声明结构点才能解决您遇到的错误。

    #include <iostream>
    
    using namespace std;
    struct point
        {
            int a, b;
        };
    
    void exchange(point& p);
    
    int main()
    {
    
    
        point one = {1,2};
    
        exchange(one);
        cout << one.a << " , " << one.b;
        return 0;
    }
    
    void exchange(point& p)
    {
        int temp=0;
        p.a = temp;
        p.a = p.b;
        p.b = temp;
    }
    

    【讨论】:

      【解决方案3】:

      point 结构是在 main 的范围内声明的,因为你的 exchange() 函数在 main 的范围之外,它会抛出一个错误。您需要在 main 之外定义结构。

      【讨论】:

        猜你喜欢
        • 2019-05-18
        • 2019-04-17
        • 2015-12-09
        • 1970-01-01
        • 2011-07-10
        • 2021-11-28
        • 2011-09-11
        • 2012-03-30
        • 2023-04-05
        相关资源
        最近更新 更多