c - 硬币堆,推送功能(C)

标签 c stack

我有一堆硬币,是这样制作的:

#define MAX_PAIS 20

typedef int VALUE;

typedef struct {
    VALUE value;
    char country [MAX_PAIS];
} COIN;

#define MAXSTACK 100

typedef struct {
    int top;
    ELESTACK item [MAXSTACK];
} STACK;

要将一枚硬币插入堆栈,我会这样做:

STATUS push(STACK *stc, const ELESTACK *ele) {

    //stuff

    stc->top++;

    retorno = copyEleStack(stc->item[stc->top], ele);

   //stuff
}

重要的是 copyElestack 的事情,我的 ide 给了我一个错误,它说这个函数需要第一个参数是 struct elestack * 但是是 elestack...提到的函数是这样做的:

ELESTACK *copyEleStack(ELESTACK *dst, const ELESTACK *src) {

    int retorno;

    retorno = copyCoin(dst, src);

    if (retorno == ERROR) {
        return NULL;
    }


}

和复制币:

STATUS copyCoin(COIN * pDest, const COIN * pOrigin) {

    pDest->value = pOrigin->value;

    strcpy(pDest->country, pOrigin->country);

    if (pDest->value != 0 && pDest->country != NULL) {
        return OK;
    }

    return ERROR;

我认为这可能与指针有关,但我现在没有看到它,任何帮助都会很好

最佳答案

你的编译器告诉你的是正确的事情。 copyEleStack 接受一个 ELESTACK*,但您向它传递一个 ELESTACK 值。尝试 &stc->item[stc->top](stc->item+stc->top)

关于c - 硬币堆,推送功能(C),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21833325/

相关文章:

c - 单调路径面积的递归和

c - C 中的逻辑运算符导致我的循环出现问题?

c++ - c++中变量的栈内存分配

调用具有不同参数个数的 cdecl 函数

c - 指针和堆栈实现的问题

c - 前后增量运算符关联性问题 :(

c - 下面的链接列表代码给出了有趣的错误,你能检查一下吗?

c - 我的输入矩阵不包含零,但是当我打印矩阵时我得到零。问题描述如下

clang 中的 C++ 结构内存开销?

c++ - 堆叠推和弹出功能不起作用