C语言为什么不能在定义结构时设定默认值呢?

screen12 2012-02-26 09:56:42
如果能在定义结构时设定默认值该有多好?比如:

struct XS
{
int a = 2;
int b = 16;
char c[4] = {'c', 'h', 'a', 'r'};
}

struct XS xs[100];

结果这100个结构均按默认值设好。

为什么不添加这个功能呢?我太需要了,多少次为没有这个功能而绞尽脑汁。

...全文
925 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
AnYidan 2012-02-26
  • 打赏
  • 举报
回复
lz 没有理解“声明”和“定义”;“类型”和“变量”
wizard_tiger 2012-02-26
  • 打赏
  • 举报
回复
这个在C中用循环赋值就可以了,没办法。
seucs 2012-02-26
  • 打赏
  • 举报
回复
语言的限制,C++可以用默认构造函数实现类似功能


//C++ Code
struct XS
{
XS():a(2), b(16){ strcpy(c, "char");}
int a;
int b;
char c[5];
};

沭水河畔 2012-02-26
  • 打赏
  • 举报
回复
C语言没有这种功能,应该是处于性能上的考虑。就好比,malloc后的内存空间值不一定是0。

#include <stdio.h>

struct xs{
int a;
int b;
char c[4];
};

int main(void)
{
int i = 100;
struct xs temp = {2, 16, {'c', 'h', 'a', 'r'}};
struct xs XS[100];

for(i = 0; i < 100; ++i) {
memcpy(&XS[i], &temp, sizeof(struct xs));
}

printf("%d %d %c%c%c%c\n", XS[50].a, XS[50].b,
XS[50].c[0], XS[50].c[1], XS[50].c[2], XS[50].c[3]);

return 0;
}
蛮牛儿 2012-02-26
  • 打赏
  • 举报
回复
你用循环来赋值不就行了

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧