问题遇到的现象和发生背景
C++初学者,本来是想学习一下结构体指针通过传参进去的形式初始化的,结果发现一些意想不到的问题
用的是windows下的vscode和mingw64 gdb
用代码块功能插入代码,请勿粘贴截图
typedef struct {
int32_t width;
int32_t height;
}Buffer;
int32_t Init(Buffer** buf)
{
Buffer temp = {
.width = 1000,
.height = 500
};
*buf = &temp;
printf("in the function Init, %d x %d\n",(*buf)->width,(*buf)->height);
return 0;
}
int32_t Init_b(Buffer *b)
{
Buffer *c = (Buffer*)malloc(sizeof(Buffer));
Init(&c);//c指针传进去初始化
printf("in the function Init_b for buffer c, %d x %d\n",c->width,c->height);
printf("in the function Init_b for buffer c, %d x %d\n",c->width,c->height);
return 0;
}
运行结果及报错内容
为什么最后这两行printf居然不同?