C语言怎么给结构体的数组初始化?说的不太明白,具体看下面例子

struct xscj
{
int xuehao;
char xingming[10];
}
main()
{
struct xscj stu={243,"jiyu"};
// stu.xuehao=243;
// stu.xingming[10]="jiyu";
printf("%s",stu.xingming);
}
先不看//后面的,这样是可以输出的,但是如果我把 struct xscj stu【={243,"jiangyu"};】
【】里的去掉然后看//后面的,就不行了,我想知道能不能stu.xingming[10]="jiyu"这样初始化啊???就想知道结构里的数组该怎么初始化?

第1个回答  2019-08-09
struct x{
int a;
char b[10];
}c//或者 c={.b="kook"};(记不清要不要c99了)
//或者strcpy(c,"kook");(自己注意添加头文件)
//或者c.b[0]='k';c.b[1]='o';c.b[2]='o';c.b[3]='k';
或者char *d="kook";
for(int i=0;i<strlen(d);i++)
c.b[i]=d[i];
printf("%s",c.b);
随便举几个例子,写法不严谨(越往后方法越那什么...),大佬轻喷
第2个回答  2019-07-24
C的数组初始化!必须在声明的时候才可以用 a[5] = {1,2,3,4,5}; 声明的时候没有初始化!就只能一个元素一个元素赋值了!追答

或者用地址传递!

追问

一个元素一个元素赋值,是指stu.xingming[0]='j';
stu.xingming[1]='i';
这样吗???????

追答

是的

本回答被提问者采纳
第3个回答  2019-07-24
不能这样,应该是:
stu.xingming="jiyu";

这样就行了。追问

我试了一下,运行不了啊

追答

一个元素一个元素赋值一定可以,如:
stu.xingming[0]='j';
stu.xingming[1]='i';
……
C语言在结构体声明的时候如果不初始化的话,就只能这样了。(在结构体声明的时候可以向刚刚一样)

追问

哭了,在结构体声明的时候可以stu.xingming="jiyu";???具体就是
struct xscj
{
int xuehao;
char xingming[10];
}stu={1,"jiyu"}
你说的是这个意思不?

追答

不是,是
stu.xingming[0]='j';
stu.xingming[1]='i';
……
这样。
声明的时候可以使用{1,2,3,4,5},后面不行
地址传递 其实也可以,不过比较复杂

追问

ok知道了谢谢你

第4个回答  2019-07-24
这样stu.xingming = "jiyu"就行了,不用带下标。追问

我改了然后试了一下,但是都运行不了

追答

struct xscj
{
int xuehao;
char* xingming;
}
这样定义就行了

追问

为什么?!我试了不可以啊?

相似回答