是C中的struct,它由1个字段组成,是同一类型的字段吗?

时间:2013-01-30 17:12:19

标签: c types struct

 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逐场复制执行。 换句话说,它在ANSI C中是srtuct { char[]; }char*吗?

1 个答案:

答案 0 :(得分:5)

这两个问题的答案归结为一个是否定的。

一个成员struct的成员类型为struct;它与单个成员的类型不同。

此外,数组和指针不是一回事。数组可以像

一样衰减到指针
char buf[256];
char *p = buf;

但不是相反。