Re: [問題] 字串用 char[] 跟 char* 的比較
※ 引述《kahang (總會有辦法的)》之銘言:
: 之前在看一些C的常見問題
: 看到這段程式碼
: 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;
str1與str2是宣告兩個char array, 並將初值都設成....
{'a', 'b', 'c', '\0'}, str1與str2各自擁有自己的記憶體空間....
所以str1與str2會在不同的address, 拿它們比較自然不相等....
: cout << ( str3 == str4 ) << endl;
同上, 只是這次str3與str4給定初值後便不得修改其內容....
(應該是指"abc", 如果小弟我沒記錯的話啦....Orz)
理論上, compiler夠聰明的話還是有機會編出str3 == str4吧?_?
: cout << ( str5 == str6 ) << endl;
: cout << ( str7 == str8 ) << endl;
str5678是char指標, 指向一個const char array內容為"abc"的....
所以某段記憶體位置裡面放了"abc"這個常數字串....
str5678則都指向那個字串所在記憶體的address....
不同的是, str56因為宣告成const, 所以str56指到的位址不能更改....
: 結果是 0011
: 可是不知道為什麼 囧
: 有大大可以幫忙解析一下嗎
: 謝謝
以上, 印象中大概是這樣, 有漏誤的再麻煩板上其他強者們補完吧^^||
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.134.41.4
推
08/31 20:55, , 1F
08/31 20:55, 1F
→
08/31 20:59, , 2F
08/31 20:59, 2F
→
08/31 21:00, , 3F
08/31 21:00, 3F
推
08/31 21:03, , 4F
08/31 21:03, 4F
→
08/31 21:04, , 5F
08/31 21:04, 5F
推
08/31 21:07, , 6F
08/31 21:07, 6F
推
08/31 21:11, , 7F
08/31 21:11, 7F
→
08/31 21:19, , 8F
08/31 21:19, 8F
推
08/31 21:24, , 9F
08/31 21:24, 9F
推
09/01 19:42, , 10F
09/01 19:42, 10F
→
09/01 19:42, , 11F
09/01 19:42, 11F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):