我有一堆硬币,它们是用这种方法制成的:
#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)