Re: [問題] 指標字串和字元陣列的差異
※ 引述《Nt1 (用功點吧!)》之銘言:
: 小弟是c++新手,以前都是走java的,想請問一個很基本的問題。
: 1: char *tmp = "test";
: 2: char tmp[] = "test";
: 這兩種方式,第二種會自動在結尾加上 '\0' ,所以size是5。
: 而第一種不會在結尾加上 '\0',所以size是4。
錯,兩種都會在結尾加上 '\0'
第一種 size 是 4 是因為那是 tmp 指標的大小
原理是
第一種是把 test\0 放到程式的 .rtext 區段(一個唯讀的常數區)
再用一個指標指向它,你不能更改字串內容,也只能用 strlen 知道長度
正確的寫法是 const char * tmp = "test";
所有的 string literal 都是唯讀的
第二種是編譯器知道 test\0 佔五個 byte,所以它自動決定陣列的大小
把 test\0 填進陣列
這個陣列的內容是可修改的
: 想請問一下,這兩種方式,優缺點是什麼呢?實務上大家比較喜歡用哪一種方式?
: 又,第一種不會加上結束字元,會遇到什麼可能的問題嗎?
: 謝謝!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.32.198.231
→
08/02 18:59, , 1F
08/02 18:59, 1F
→
08/02 20:21, , 2F
08/02 20:21, 2F
→
08/02 20:22, , 3F
08/02 20:22, 3F
→
08/02 20:24, , 4F
08/02 20:24, 4F
推
08/02 20:59, , 5F
08/02 20:59, 5F
推
08/03 00:30, , 6F
08/03 00:30, 6F
→
08/03 01:32, , 7F
08/03 01:32, 7F
討論串 (同標題文章)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章