首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

,这段代码为什么编译出错阿

2012-03-01 
求助,这段代码为什么编译出错阿?main(argc,argv)intargcchar*argv[]{charc1[100]charc2[10]charc3[100

求助,这段代码为什么编译出错阿?
main(argc,argv)
int   argc;
char   *argv[];
{
char   c1[100];
char   c2[10];
char   c3[100];
int   tt;
struct   aa
{
      char   bb[10];
      char   cc[10];
};
struct   aa   aa;
struct   aa   dd;
strcpy(aa.bb, "abc ");
strcpy(aa.cc, "lzh ");

memset(&dd,0,sizeof(dd));
memcpy(&dd,aa,sizeof(dd));
printf( "\ndd.bb=%d ",dd.bb);
printf( "\ndd.cc=%s ",dd.cc);
}
编译后就提示
1506-280   (S)   Function   argument   assignment   between   types   "const   void* "   and   "struct   aa "   is   not   allowed.这是什么原因?请教各位大侠了!

[解决办法]
memcpy(&dd,&aa,sizeof(dd));这里少了个&
[解决办法]
改成下面这样就能正常运行了,

main(argc,argv) //这种写法太旧了,最好改成:main(int argc,char *argv[])
int argc;
char *argv[];
{
char c1[100];
char c2[10];
char c3[100];
int tt;
struct aa
{
char bb[10];
char cc[10];
};
struct aa a; //不要和结构体同名,改成a和b
struct aa d;
strcpy(a.bb, "abc ");
strcpy(a.cc, "lzh ");

memset(&d,0,sizeof(d));
memcpy(&d,&a,sizeof(a)); //在第二个参数前加&,sizeof要取a的大小
printf( "\ndd.bb=%d ",d.bb);
printf( "\ndd.cc=%s ",d.cc);
}

热点排行