我想在堆上分配一个结构体,对其进行初始化,并从函数中返回指向它的指针。我想知道在这种情况下是否有一种方法可以初始化结构体中的const成员:
#include <stdlib.h>
typedef struct {
const int x;
const int y;
} ImmutablePoint;
ImmutablePoint * make_immutable_point(int x, int y)
{
ImmutablePoint *p = (ImmutablePoint *)malloc(sizeof(ImmutablePoint));
if (p == NULL) abort();
// How to initialize members x and y?
return p;
}
从这个结果中,我应该得出结论:在堆上分配和初始化包含const成员的结构体是不可能的吗?
malloc()
函数创建的。可以考虑将p
定义为void *p;
,并将两个sizeof *p
实例更改为sizeof init
。 - cafmemcpy()
的函数。尽管如此,一旦你调用了malloc()
,memcpy()
就不太可能成为一个问题了。 - cafsizeof
明确地不评估其参数,所以表达式的行为仍然是定义好的。 - caf