桑海

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
 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 扩展阅读:
boolalpha

扩展阅读

posted on 2013-11-01 16:59  桑海  阅读(335)  评论(0编辑  收藏  举报