C-为什么在Malloc呼叫工作中引用一个未定义的对象



我正在尝试了解C中面向对象的编程。在我的互联网研究中,我遇到了此代码:

#include <stdio.h>
#include <stdlib.h>
typedef struct {
    int x, y;
    int width;
    int height;
}   Rectangle;
Rectangle *Rectangle_init(int x, int y, int width, int heihgt) {
    Rectangle *obj = malloc(sizeof *obj);
    obj->x = x;
    obj->y = y;
    obj->width = width;
    obj->height = height;
    return obj;
}
void Rectangle_draw(Rectangle *obj) {
    printf("I just drew a nice %d by %d rectangle at position (%d, %d)!n",
           obj->width,
           obj->height,
           obj->x,
           obj->y);
}
int main(void) {
    Rectangle *r = Rectangle_init(1, 1, 3, 5);
    Rectangle_draw(r);
    return 0;
}

代码编译和运行,我确实了解所有内容。但是,我没有得到的是为什么``obj''在malloc-call中可以引用``obj'',尽管它尚不存在?

,但指针OBJ是malloc(sizeof *obj)的返回值。我不明白为什么我可以使用OBJ来获得OBJ的尺寸。它像递归一样,但不是真的。我对我没有任何意义

sizeof是一个操作员,就像您习惯的算术运算符和其他运营商一样。这意味着它是告诉编译器执行特定数学或逻辑功能的符号。在这种特定情况下,它告诉编译器查询对象或类型的大小。这样做时,编译器可以说OBJ是其代码分析的矩形。

相关内容

  • 没有找到相关文章

最新更新