我有一堆硬币,是这样制作的:
#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/