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);
}