【面试题】 字符和字符串

原创 2013年12月04日 20:30:54
1. 解释下列输出结果
    char str1[] = "abc";
    char str2[] = "abc";
    const char str3[] = "abc";
    const char str4[] = "abc";
    const char *str5 = "abc";
    const char *str6 = "abc";
    char *str7 = "abc";
    char *str8 = "abc";
    cout << ( str1 == str2 ) << endl;
    cout << ( str3 == str4 ) << endl;
    cout << ( str5 == str6 ) << endl;
    cout << ( str7 == str8 ) << endl;
    结果是:0 0 1 1
    解答:
  • str1, str2, str3, str4 是数组变量,它们有各自的内存空间,应该使用strcmp比较;
  • 而str5, str6, str7, str8 是指针,它们保存的地址都是"abc"常量的地址。这是和编译器有关的,若编译器支持"常量字符串合并",那么"abc"=="abc",否则,这两个"abc"会放到不同的内存中。


收藏助手
不良信息举报
您举报文章:【面试题】 字符和字符串
举报原因:
原因补充:

(最多只允许输入30个字)