【问题标题】:how do i declare an array in a struct如何在结构中声明数组
【发布时间】:2021-03-23 11:23:08
【问题描述】:

我做了这个代码。我也尝试在结构中声明数组。但我不断收到错误消息。有人可以帮助我:) 谢谢。祝你有美好的一天。

#include<stdio.h>
struct stack
{
    int arr[5];
    int top;
}st;


void push (int ele)
{
    st.arr[st.top]=ele;
    st.top++;
}
int pop()
{
    int item=st.arr[st.top];
    st.top--;
    return item;
}
void display()
{
    int i;
    for(i=4;i>=0;i--)
    {
        printf("%d\t",st.arr[i]);
    }
}
int main()
{
   st.arr[5]={3,6,8,7,5};
   display();
}

【问题讨论】:

  • 请用确切的错误信息更新您的问题。
  • 您必须先在 main 中声明 struct stack st;,然后才能将其用于任何其他目的

标签: c struct initialization


【解决方案1】:

这行不通:

st.arr[5]={3,6,8,7,5};

因为您不能一次直接分配给整个数组。但是,您可以做的是初始化结构以及它在定义时包含的数组:

struct stack
{
    int arr[5];
    int top;
} st = { {3,6,8,7,5}, 5};

【讨论】:

  • 我确实如你所说。但是当我使用 pop 函数时,它显示“已删除元素 = 5”,即使它应该是 9。#include&lt;stdio.h&gt; struct stack { int arr[5]; int top; }st = { {3,6,8,7,9},5}; int pop() { int item=st.arr[st.top]; st.top--; return item; } int main() { printf("deleted element = %d\n",pop()); push(66); display(); }
  • 哦...好的。非常感谢...祝您有美好的一天!
  • 我之前的评论(关于初始化值)是错误的,我没有仔细看你的代码。您应该将初始化值保持为 5,并将您的 pop() 函数调整如下(例如):int pop() { if (st.top) { return st.arr[--st.top]; } return -1; } 返回值 -1 仅用于说明。
  • 当然。 :) 再次感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-31
  • 2020-11-09
  • 2013-06-19
  • 2018-05-13
相关资源
最近更新 更多