堆栈的硬币,推功能(C)

时间:2014-02-17 15:44:23

标签: 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;
    }


}

和copycoin:

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;

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

1 个答案:

答案 0 :(得分:1)

您的编译器告诉您正确的事情。 copyEleStack需要ELESTACK*,但您传递的值为ELESTACK。请尝试&stc->item[stc->top](stc->item+stc->top)