1、#include<string.h>
#include<stdlib.h>
#include<stdio.h>
char*GetMemory(void)
{char p[]="hello world";
return p;}
void main()
{char *str=NULL;
str=GetMemory();
printf(str);
printf("/n");
}
为什么输出的结果不是“hello world”呢
2、#include<stdio.h>
#include<stdlib.h>
#include<string.h>
char*strcat(char*dst,const char*scr)
{char*cp=dst;
while(*cp)
cp++;
while(*cp++=*scr++);
printf(dst);
return(dst);
}
main()
{char str[]="hello world";
char*p,*q;
q=strcat(p,str);
}
这个程序是什么问题 运行过程中 出现了这样的错误
Linking...
LIBCD.lib(strcat.obj) : error LNK2005: _strcat already defined in Cpp9.obj
Debug/Cpp9.exe : fatal error LNK1169: one or more multiply defined symbols found
执行 link.exe 时出错.
这是两个华为的笔试题目 我的朋友对此作出了解释 第一个是因为GetMemory()函数,局部变量在函数退出后销毁,把getmemory里的那个 char p[] 改成 static char p[] 就可以正确输出结果了。第二个中的link错误是由于函数strcat()与库函数strcat重名造成的。