我有一堆硬币,这是用这种方式制作的:
#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;
我认为这可能与指针有关,但我现在没有看到它,任何帮助都会很好
答案 0 :(得分:1)
您的编译器告诉您正确的事情。 copyEleStack
需要ELESTACK*
,但您传递的值为ELESTACK
。请尝试&stc->item[stc->top]
或(stc->item+stc->top)