→ loveme00835:sizeof(m_str) / sizeof(m_str[0]) 指標大小/字元大小 11/08 16:56
→ loveme00835:想知道字串多長用 strlen() 11/08 16:57
→ Nestarneal:謝謝,恢復正常了 :) 不過還是有點不懂, 11/08 17:06
→ Nestarneal:sizeof(m_str)如果是指標指的大小,str3不含'\0' 11/08 17:07
→ Nestarneal:有8,然後sizeof(m_str[0])字元大小 = 1,除起來 = 8 11/08 17:07
→ Nestarneal:不過結果是4,代表sizeof(m_str)的部分是4嗎? 11/08 17:07
→ Nestarneal:不過 str3->m_str = "abcdacef",大小不是8嗎? 11/08 17:08
→ shadow0326:因為m_str是一個char*,sizeof(m_str)等於sizeof(char*) 11/08 17:09
→ shadow0326:在你的機器上面char*就是4個bytes 所以才印4 11/08 17:10
→ loveme00835:指標自己的大小 vs 指到字串的長度, 是不一樣的東西, 11/08 17:11
→ loveme00835:字串的長度無法在編譯時期評估, 用 sizeof() 就錯了 11/08 17:13
→ Nestarneal:用 (sizeof pstr) / (sizeof pstr[0]) 求陣列元素個數 11/08 17:24
→ Nestarneal:為什麼在這範例中可以用這種寫法 11/08 17:24
→ Nestarneal:雖然pstr是 char**,不過應該跟char*一樣 11/08 17:24
→ Nestarneal:依據機器會有固定的大小,所以來求個數不是應該也會錯 11/08 17:25
→ Nestarneal:誤嗎? 11/08 17:25
推 shadow0326:pstr是char*[] 不是char** 陣列可以用sizeof算整個大小 11/08 17:48
→ shadow0326:比如你的m_str如果宣告成 char m_str[] = "abcdef"; 11/08 17:49
→ shadow0326:那sizeof(m_str)就會是7 (含'\0') 11/08 17:50
→ shadow0326:另外如果陣列丟給函式當參數傳遞的話 sizeof也就不會是 11/08 17:51
→ shadow0326:整個陣列的大小了 11/08 17:51
→ Nestarneal:瞭解~觀念變得清楚許多了,謝謝:) 11/08 17:57