C 函数为空,但函数参数中存在分段错误

C 函数为空,但函数参数中存在分段错误,c,segmentation-fault,C,Segmentation Fault,我的C程序的堆栈类型定义如下: typedef struct { char T[MaxEl+1][MAX_CHAR]; address TOP; boolean alive;//ignore this } Stack; 并创建一个函数: void expandP(Stack stack[],int i,char input[]) {//variable stack is array of Stack .. Stack temp; CreateE

我的C程序的堆栈类型定义如下:

typedef struct {
    char T[MaxEl+1][MAX_CHAR];
    address TOP;
    boolean alive;//ignore this
} Stack;
并创建一个函数:

void expandP(Stack stack[],int i,char input[]) {//variable stack is array of Stack
    ..

    Stack temp;
    CreateEmpty(&temp);
    ..
    copyStack(&temp,stack[i]);
}

void CreateEmpty(Stack *S) {
    Top(*S) = Nil;
    isAlive(*S) = false;
}

void copyStack(Stack* out,Stack in) {

}

它在运行时给出错误分段错误,在编译时没有警告,使
堆栈在
指针中

void copyStack(Stack* out, const Stack *in) {
然后这样称呼它:

copyStack(&temp,&stack[i]);

请发布实际的代码来演示这个问题。此外,调试器是您的朋友。如果在其中运行程序,它将显示SEGFULT发生的位置。MaxEl和MAX_CHAR的值是多少?可能是您在堆栈上分配了太多。具体是什么导致分段错误?你在调试器中检查过你的变量吗?在我尝试了B的解决方案后,问题消失了Mitch@Donotalo,MaxEl和MAX_CHAR已经在程序wooww中的某个地方定义,这解决了问题,为什么会这样?您的
结构中的某些内容无法像
int
那样复制,所以你需要传递一个指向它的指针。老实说,除了通过指针,我从未以任何方式传递过
struct
,但我是在
C
中传递的,看起来您使用的是导数。