C - 自定义类型中的默认值

时间:2018-04-14 21:08:19

标签: c

我在C ++中测试了这段代码(做了正确的修改,例如printf到std :: cout)并且它有效。但在C中则没有。这是为什么?如果我在typedef struct __POINT中删除了我的x和y的默认值,一切正常。

#include <stdio.h>
#include <stdlib.h>

typedef struct __POINT
{
  int x = 0, y = 0;
} Point;

int main()
{
  Point *x = malloc(sizeof(Point));
  x->x = 5;
  x->y = 6;
  printf("%i\n%i", x->x, x->y);
  getchar();
  return 0;
}

2 个答案:

答案 0 :(得分:1)

C - 与C ++相反 - 不支持struct中定义的默认值。所以你的程序根本就不会编译。

如果您要将值初始化为0,则可以使用calloc(使用0初始化内存)来克服此问题:

Point *x = calloc(1,sizeof(Point));

答案 1 :(得分:0)

C struct成员没有可选的默认值,这种语法错误。唯一的默认值是初始化程序中遗漏0的特定字段时使用的struct初始化。

由于您甚至使用malloc,因此分配的存储空间根本没有初始化。