K&R 本の構造に関する章を読んだ後、構造をよりよく理解するためにいくつかのテストを行うことにしたので、次のコードを書きました。
#include <stdio.h>
#include <string.h>
struct test func(char *c);
struct test
{
int i ;
int j ;
char x[20];
};
main(void)
{
char c[20];
struct {int i ; int j ; char x[20];} a = {5 , 7 , "someString"} , b;
c = func("Another string").x;
printf("%s\n" , c);
}
struct test func(char *c)
{
struct test temp;
strcpy(temp.x , c);
return temp;
}
私の質問は: なぜc = func("Another string").x;
機能しているのですか (違法であることはわかっていますが、なぜ機能しているのでしょうか)? strcpy()
最初は(それが最も論理的なことのように思えたので)を使用して書きましたが、このエラーが発生し続けました:
structest.c: In function ‘main’:
structest.c:16:2: error: invalid use of non-lvalue array