结构体为什么只能在定义的时候用括号整体赋值。

如题,如果编译器设计成可以在结构体定义之后用括号整体赋值的话会产生什么后果。
只能
struct test{
int a;
int b;
}kkk={1,2};

而不能struct test{
int a;

int b;

}kkk;
kkk={1,2};
教科书上只是说不能这样,但没说为什么不能这样,
当初写编译器的人一定考虑到了这种情况是不合理的,但为什么不合理呢,请举例说明一下。

未必是考虑到不合理,或许只是考虑到实现起来比较麻烦……并且结构体本身没有几个运算,定义过后使用起来一般是访问某一个成员而不经常整体赋值吧,所以这种方法的需求也不会很大,以至于需要专门规定这样一种语法……
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-07-28
初始化的时候有个默认的构造函数,构造函数只能在初始化时调用。本回答被提问者采纳
第2个回答  2013-07-28
{}只能用在初始化中,赋值的时候不能使用。跟数组一样。
这是编译器的规定。没有什么合理不合理的。
统一标准,代码才能通用。追答

定义之后也可以用大括号赋值的话,没啥实际用途吧。基本上整体赋值就是初始化时候用下。如果元素很多,只想改一个值,用大括弧的话岂不是要把每个元素的值再写一遍?不然就默认为零了。

结构体为什么只能在定义的时候用括号整体赋值。
未必是考虑到不合理,或许只是考虑到实现起来比较麻烦……并且结构体本身没有几个运算,定义过后使用起来一般是访问某一个成员而不经常整体赋值吧,所以这种方法的需求也不会很大,以至于需要专门规定这样一种语法……

浅谈OC 与结构体
报错是因为语法问题. 上面也提到了, 定义结构体与定义 C 中数组的写法是一样的, 所以直接把一个大括号赋值给一个变量系统并不能识别出这是一个数组赋值操作还是一个结构体赋值操作, 所以我们只要强转一下即可:当然我们也可以另外创建一个结构体变量 unhappy 初始化为我们想给 happy 修改成的值, 再...

定义变量时后面带个括号是什么意思
(2)定义标准的结构体变量时不能这样用(但如果你在结构体中加了结构函数那就可以了),只有在定义标准类型的变量或类对象变量时才能这样用。 本回答由提问者推荐 举报| 答案纠错 | 评论 5 0 hopehill332 采纳率:54% 擅长: C\/C++ 为您推荐: 局部变量C 动态变量举例C 汇编语言变量的初值 vb 所有变量类...

在结构题struct 命名和括号尾命名的区别
在C语言里面,struct是用来定义新的数据类型——结构体,typedef是给数据类型取别名。据说这两个关键词同时使用有助于减少代码量和增加代码的可读性(不过我认为它当typedef和struct在一起的时候反而降低了代码的可读性),很多时候为了方便,我们常常讲stuct与typedef放在一起用。像这样的代码是比较好理解...

说明结构体程序~
对int来说就是0。所以前8个a.list[]是数组中的值。其他的全是0 。a={{0,2,3,5,4,1,6,8},{8}};这句是错误的。整体赋值只能是在初始化的时候。该城 List a={{0,2,3,5,4,1,6,8},{8}};然后去掉前面的声明就可以了。因为有括号约束,所以最后一个8自动赋给size。

结构体大括号后面是什么
1.结构体类型名加变量名定义的,就是结构体变量;跟int a;这是的用法是完全一样的。2.大括号之后定义的就是变量,相当于定义结构体的时候,同时定义了变量;如果不定义,在以后定义也是一样的。

C++中对结构体中的字符数组赋值的问题
如果不在定义的时候初始化,后面就只能挨个初始化。比如int a[2] = {1,2};可以 但是int b[2];b[]={1,2};不行,int b[2];b ={1,2}也不行。如果你要给结构体一起赋值的时候必须这样 struct stu a = {{'a','b'},'c',{'d','e'},{'f','g'}};...

定义变量时后面带个括号是什么意思
1。在一些语言中,变量可能被明确为是能表示可变状态、具有存储空间的抽象(如在Java和Visual Basic中);但另外一些语言可能使用其它概念(如C的对象)来指称这种抽象,而不严格地定义“变量”的准确外延。由于变量能够把程序中准备使用的每一段数据都赋给一个简短、易于记忆的名字,因此它们十分有用。

结构体最后大括号后面跟两个指针
一、指向结构体的指针 结构体最后大括号后面跟一个指针时,表示这个结构体上面的所有变量都可以被指针指向。这种指针通常称为指向结构体的指针,可以使用它来访问结构体中的所有成员。下面是一个例子:struct student { char name[20];int age;float score;} *p;int main() { struct student s = {...

结构体中定义结构体怎么赋值
本例中,boy2,boy1均被定义为外部结构变量,并对boy1作了初始化赋值。在main函数中,把boy1的值整体赋予boy2,然后用两个printf语句输出boy2各成员的值。结构数组的初始化 数组的元素也可以是结构类型的。因此可以构成结构型数组。结构数组的每一个元素都是具有相同结构类型的下标结构变量。在实际应用...

相似回答