gpt4 book ai didi

使用 C 中的结构创建新对象

转载 作者:太空狗 更新时间:2023-10-29 15:11:36 25 4
gpt4 key购买 nike

我正在尝试使用 turbo c 在 c 中创建对象。我无法在其中定义属性。

/*
code for turbo c
included conio.h and stdio.h
*/



typedef struct {
int topX;
int topY;
int width;
int height;
int backgroundColor;
}Window;

typedef struct {
Window *awindow;
char *title;
}TitleBar;


Window* newWindow(int, int, int, int, int);
TitleBar* newTitleBar(char*);



void main() {
TitleBar *tbar;

tbar = newTitleBar("a title");
/*
the statement below echos,
topX:844
topY:170

instead of
topX:1
topY:1

*/
printf("topX:%d\ntopY:%d", tbar->awindow->topX, tbar->awindow->topY);
/*
where as statement below echos right value
echos "a title"
*/
printf("\ntitle:%s", tbar->title);

//displayTitleBar(tbar);
}


Window* newWindow(int topX, int topY, int width, int height, int backgroundColor) {
Window *win;
win->topX = topX;
win->topY = topY;
win->width = width;
win->height = height;
win->backgroundColor = backgroundColor;
return win;
}


TitleBar* newTitleBar(char *title) {
TitleBar *atitleBar;
atitleBar->awindow = newWindow(1,1,80,1,WHITE);
atitleBar->title = title;
return atitleBar;
}

我做错了什么?

什么是定义结构的正确方法?

最佳答案

您只需声明一个指针:

  Window *win;

并尝试在下一行中写入,同时指针仍未指向任何有效对象:

  win->topX = topX;

您可能想创建一个新对象:

  Window *win = (Window*)malloc(sizeof(Window));

TitleBar 同理

关于使用 C 中的结构创建新对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9562936/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com