使用函数初始化struct

And*_*ani 0 c struct initialization

这是在我的main.c

int main(){

int size = 5;
Path Solution;
PathInit(&Solution,size);
printf("Size: %d\n",Solution.size);
printf("top: %d", Solution.top);
}
Run Code Online (Sandbox Code Playgroud)

这是我的path.h

typedef struct{
int size;
int top;
int *item;
}Path;
Run Code Online (Sandbox Code Playgroud)

这是我的路径

void PathInit(Path *P, int vsize){
P = (Path *)malloc(sizeof(Path));
P->size = vsize;
P->item = (int *)malloc(sizeof(int)*vsize);
P->top = -1;
Run Code Online (Sandbox Code Playgroud)

}

预期的产出是

Size: 5
top: -1
Run Code Online (Sandbox Code Playgroud)

然而,输出是符合的

Size: 3412832
top: 0
Run Code Online (Sandbox Code Playgroud)

有人可以解释为什么我的结构没有正确初始化.这也不是我的完整代码,但我已将问题缩小到这些部分.任何帮助都会很棒.谢谢

Dav*_*eri 5

您正在使用堆栈:

Path Solution;
Run Code Online (Sandbox Code Playgroud)

并传递一个指针:

PathInit(&Solution,size);
Run Code Online (Sandbox Code Playgroud)

所以你不需要预留空间malloc:

void PathInit(Path *P, int vsize){
    P = (Path *)malloc(sizeof(Path)); /* Remove this line */
Run Code Online (Sandbox Code Playgroud)