我有一堆硬币,它们是用这种方法制成的:

#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事情,我的想法给我一个错误,它说此函数需要第一个参数为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;


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

最佳答案

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

10-06 00:58