读书人

构造体 这样运行不了

发布时间: 2012-12-31 11:57:52 作者: rapoo

结构体 这样运行不了
#include <stdio.h>
typedef struct info{
int num;
int age;
char *clock;
}info;
typedef struct good{
info b[3];
}good;
void main()
{
good a;
a.b[0]={1,1,"9:00"};
printf("%d\n%d\n%s\n",a.b[0].num,a.b[0].age,a.b[0].clock);
}
为什么不能运行,错误不会改啊!!!
[解决办法]

#include <stdio.h>
typedef struct info{
int num;
int age;
char *clock;
}info;
typedef struct good{
info b[3];
}good;
void main()
{
good a;
info temp={1,1,"9:00"};
a.b[0]=temp;
//a.b[0]={1,1,"9:00"};
printf("%d\n%d\n%s\n",a.b[0].num,a.b[0].age,a.b[0].clock);
}





[解决办法]

void main()
{
good a = {{1,1,"9:00"}};
//a.b[0]={1,1,"9:00"};
printf("%d\n%d\n%s\n",a.b[0].num,a.b[0].age,a.b[0].clock);
}

[解决办法]

//结构体声明后,对结构体是不能再进行初始化的。只能一个一个赋值
good a;
a.b[0].num = 1;
a.b[0].age = 2;
a.b[0].clock = "9:00";

//或是这样,在声明的时候进行初始化
good a = {{1,1,"9:00"}};

[解决办法]
一个一个的去赋值
[解决办法]
引用:
你们这是什么软件,给我个吧,还有上面的我懂了,谢谢你们了

不是什么软件,把你的代码放在
之间就可以了
[解决办法]
a.b[0].num = 1;
a.b[0].age = 1;
a.b[0].clock = "9:00";
[解决办法]
引用:
C/C++ code
?



12

good a; a.b[0] = { 1, 1, "9:00" };

{ ... }这种赋值方式,只能在初始化时进行。



C/C++ code
?



1

good a = { {1, 1, "9:00"} };


+1
[解决办法]
引用:
引用:C/C++ code
?



12

good a; a.b[0] = { 1, 1, "9:00" };

{ ... }这种赋值方式,只能在初始化时进行。



C/C++ code
?



1

good a = { {1, 1, "9:00"} };

+1
+1
[解决办法]

void main()
{
good a;
a.b[0]={1,1,"9:00"};//这个只能在初始化时才能这样赋值。
printf("%d\n%d\n%s\n",a.b[0].num,a.b[0].age,a.b[0].clock);
}

[解决办法]
“变量赋值”和“变量初始化”不是一回事!
“变量赋值”发生在运行期,其写法遵循赋值语法规定。
“变量初始化”发生在编译期或运行期,其写法遵循初始化列表语法规定。

读书人网 >C语言

热点推荐