C语言为什么不能在定义结构时设定默认值呢?
如果能在定义结构时设定默认值该有多好?比如:
struct XS
{
int a = 2;
int b = 16;
char c[4] = {'c', 'h', 'a', 'r'};
}
struct XS xs[100];
结果这100个结构均按默认值设好。
为什么不添加这个功能呢?我太需要了,多少次为没有这个功能而绞尽脑汁。
[解决办法]
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;}