char *p="123"与char p[]="123"的区别???
下面是我写的一个简单的测试程序:
#include<iostream.h>
#include<string.h>
void main(void)
{
char *p;
char * aa(void);
p=aa();
char *p1=(char *) new char[100];//以下两行原本想覆盖掉p,呵呵,但没成功
memset(p1,'*',100*sizeof(char));
delete[] p1;
cout<<p<<endl;
}
char * aa()
{
char *temp="abcdefghijk";//改为char temp[]="abcdefghijk";后有问题
return temp;
}
问题是如果是temp[]有下面的警告
E:\test\pointer\a.cpp(18) : warning C4172: returning address of local variable or temporary
且输出也不对了,但象程序那样写就没问题了,我想问一下它们的区别在哪儿?难道char *temp定义的temp不是局部变量??