1 /* 2 功能: 3 把bool值显示为true或false 4 */ 5 #include<iostream> 6 using namespace std; 7 8 int main() 9 { 10 char str1[] = "abc"; 11 12 char str2[] = "abc"; 13 14 const char str3[] = "abc"; 15 16 const char str4[] = "abc"; 17 18 const char* str5 = "abc"; 19 20 const char* str6 = "abc"; 21 22 cout << boolalpha; 23 24 cout <<(str1==str2) <<endl; //false 25 26 cout <<(str3==str4) <<endl; //false 27 28 cout << (str5==str6) <<endl; //true *str5=*str6='a'; 29 30 cout << (&str5==&str6) << endl; //false 31 32 } 33 /* 34 boolapha 35 分别输出false,false,true。 36 Str1和str2都是字符数组,每个都有其自己的存储区,它们的值则是各存储区的首地址,不等; 37 str3和str4同上,只是按const语义,它们所指向的数组区不能修改。 38 Str5和str6并非数组而是字符指针,并不分配存储区,其后”abc”以常量形式存于静态数据区,而它们自己仅是指向该区首地址的指针,它们指向相同的常量区域。等效。 39 str5 str6相当于对字符常量"abc"的引用,都指向字符常量的首地址*str5=*str6='a'; 40 41 问题1:什么时候是数组,什么时候退化为指针? 42 记得字符数组提及已知:sizeof为数组,strlen退化为指针。 43 44 扩展阅读:
扩展阅读