1、字符串面试题
下面的代码输出结果是什么?
int main(){
char str1[] = "hwl";
char str2[] = "hwl";
char *str3 = "hwl";
char *str4 = "hwl";
string str5 = "hwl";
string str6 = "hwl";
if (str1 == str2)
{
cout<<"1 == 2"<<endl;
}
else
{
cout<<"1 != 2"<<endl;
}
if (str3 == str4)
{
cout<<"3 == 4"<<endl;
}
else
{
cout<<"3 != 4"<<endl;
}
if (str5 == str6)
{
cout<<"5 == 6"<<endl;
}
else
{
cout<<"5 != 6"<<endl;
}
system("pause");
return 0;
}
为了节省内存C/C++把常量字符单独放进一个内存区域。当几个指针复制给相同的常量字符串时,他们实际上会指向相同的地址。
运行结果:1 != 2(分配两个内存,把字符串复制进去,两个初始地址不同的字符数组,所以1 != 2)
3 == 4 (地址相同)
5 == 6(内容相同)