【问题标题】:Using A Struct Object in a Function在函数中使用结构对象
【发布时间】:2012-11-03 17:55:31
【问题描述】:

我已经为队列写了一段代码。

#include <iostream>
using namespace std;

struct q
        {
            int items[10];
            int front,rear;
        } queue;

void Addqueue(struct q *queue, int item)
{
    if (queue->rear==9)
        cout << "Queue is Full.";
    else
        queue->items[++queue->rear]=item;
}


int main()
{
    queue.front=queue.rear=-1;
    Addqueue(q *queue,5);
    return 0;
}

如您所见,我使用了结构对象。在 Addqueue Function 中,第一个元素是 (struct q *queue),我想知道我应该写什么来代替它,同时我在 main 函数中调用这个函数,例如我测试了 Addqueue(q *queue,5) 和Addqueue(queue,5) 和 Addqueue(*queue,5) 和 Addqueue(struct q *queue,5),但它们都不起作用,我将收到此行的错误。所以我该怎么做?怎么了?

【问题讨论】:

    标签: c++ function windows-7 struct


    【解决方案1】:
    #include <iostream>
    using namespace std;
    
    struct q
    {
        int items[10];
        int front,rear;
    } queue;
    
    void Addqueue(q *queue, int item)
    {
        if (queue->rear==9)
            cout << "Queue is Full.";
        else
            queue->items[++queue->rear]=item;
    }
    
    
    int main()
    {
        queue.front=queue.rear=-1;
        Addqueue(&queue, 5);
        return 0;
    }
    

    这是正确的方法。

    【讨论】:

      【解决方案2】:

      正确的语法是Addqueue(&amp;queue, 5)Addqueue 接受一个指向struct q 的指针,所以你需要通过operator&amp; 的地址来获取queue 的地址才能传入。

      也就是说,您绝对应该使用 std::queue&lt;int&gt; 而不是您自己的本地队列。

      【讨论】:

        【解决方案3】:

        您创建了指向结构q 的指针,但它没有分配内存。并且指针 q *queue 的本地名称覆盖您的对象 queue

        【讨论】:

          猜你喜欢
          • 2016-02-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-01-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多