一个觉得不错的面试题,程序如下:
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”;
printf(“%d\n”,str1==str2);
printf(“%d\n”,str3==str4);
printf(“%d\n”,str5==str6);
printf(“%d\n”,str7==str8);
运行结果如下:
0
0
1
1
注意:从这个面试题我们可以加深一个印象,字符串数组是开辟了一个自己空间来存放字符串,而指针字符串是所有的像这这样的指针都指向常量区里一个固定的字符串的首地址。
本文通过分析C++中不同类型的字符串表示方式(数组与指针),揭示了它们在内存分配与引用上的本质区别。通过比较str1与str2、str3与str4、str5与str6、str7与str8的特性,读者可以清晰地认识到数组直接开辟独立空间存储字符串,而指针则指向常量区固定位置。这一对比有助于加深对C++底层内存管理的理解。
1259

被折叠的 条评论
为什么被折叠?



