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)
有人可以解释为什么我的结构没有正确初始化.这也不是我的完整代码,但我已将问题缩小到这些部分.任何帮助都会很棒.谢谢
您正在使用堆栈:
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)