1
 typedef struct _name name;
 struct _name { char name[256]; };

 // ...
 name Name;
 char *buf = (char*)malloc( 256*sizeof(char) );

 // ...
 // if I do not want to write strcpy (Name.name,buf); 
 // and write: list_name_insert (&List,0,&Name);
 // if just write:
 list_name_insert (&List,0 /* index */,(name*)buf /* pointer to elem */);
 // Will it be correct?
 // ...

関数 list_name_insert では、標準 C のフィールドごとの elem のコピーが実行されます。つまり、ANSI Csrtuct { char[]; }と同じですか?char*

4

1 に答える 1

5

これら 2 つの質問に対する答えは、1 つにまとめられます。

structメンバーが 1 つの Aにはstruct型があります。単一のメンバーと同じ型ではありません。

また、配列とポインタは同じものではありません。配列は、次のようにポインターに減衰できます。

char buf[256];
char *p = buf;

しかし、その逆ではありません。

于 2013-01-30T17:15:05.020 に答える