在C语言中,如果它们属于同一类型,我们可以将一个结构变量的值分配给另一个。根据这一点,在我的以下程序中,s1=s2
当两者都是struct
相同类型的变量时,我可以使用它们。但是为什么我之后就不能使用s1={59,3.14}
了吗?
我知道除了在初始化语句中之外,我们不能将字符串分配给"Test"
字符数组,因为对于字符串,它在分配期间分解为类型,因此存在类型不匹配错误。但在我的程序中, 不会分解为任何指针,是吗?为什么即使它是相同的类型也不允许分配它,特别是因为它在初始化期间是允许的?和之间有什么区别,允许分配一个但另一个不是?arr
"Test"
char*
{59,3.14}
s1
s2
{59,3.14}
s1
#include<stdio.h>
int main(void)
{
struct test1
{
int a;
float b;
} s1= {25,3.5},s2= {38,9.25};
printf("%d,%f\n",s1.a,s1.b);
s1=s2; // Successful
printf("%d,%f\n",s1.a,s1.b);
s1= {59,3.14}; //ERROR:expected expression before '{' token|
printf("%d,%f\n",s1.a,s1.b);
}