gpt4 book ai didi

C - 结构作为参数

转载 作者:太空宇宙 更新时间:2023-11-04 01:26:53 25 4
gpt4 key购买 nike

struct MyStruct
{
int i;
};

void* new(struct anyStruct) //I want to be able to pass any structure here
{
void* p = malloc(sizeof(anyStruct));
return p;
}

struct MyStruct* m = new(MyStruct);

在 C 中可以做这样的事情吗?m 叫什么?对象?

最佳答案

嗯,是的,在 C 中是可能的,但不能作为函数。使用宏

#define NEW(x) (malloc(sizeof(x)))

struct MyStruct *m = NEW(MyStruct);

但是请注意,这是一个非常糟糕的主意,因为宏不支持作用域,因此使用很容易出错。

实际上,您根本不需要宏。您需要做的就是

struct MyStruct *m = malloc(sizeof(*m));

需要注意的是它不能在函数之外工作(例如在文件范围内)。但宏观方法也不行。

请记住,如果您使用 malloc(),您有责任调用 free()

关于C - 结构作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29675232/

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