精華區beta ck54th329 關於我們 聯絡資訊
※ 引述《ugoc (打球啦)》之銘言: : ※ 引述《Quezacot (還差C++ >.<)》之銘言: : : compile會過,但run會當。 : : 如果問題出在你說的地方,compile是不會過低。 : 問題的確是出在這裡 : 因為這個statement是一個string assigned to a char* : 不可以更改string literal裡頭的東西 : 如果用array : 則每一個char都每分配給每一個位址 : 所以可以更改 : 我其實不是很了為什麼 : 或許有設計上的需要吧 char *ptr = "abcde"; 這是說把一個char pointer用const string定義 感覺起來 好像又是一個無定義的操作....@@ (別懷疑 C++ standard常有這種事) char a[] = "abcde"; 意思是 a是個c style字串 注意歐 我沒說這個string的size歐 所以 可以把array當pointer用 但是不能把pointer當array用.....@@ 但是可以間接利用ptr去操作c style string (向我上面post的code) 或許 為了區別c-style array和char pointer所以有這種語法上的限制吧... 但是感覺起來 實作是一樣的 甚至連 char * ptr = "abcde"; ptr[0] = 'f'; compile都會過耶(雖然會當) 我真的被搞昏了..... 所以我猜 ptr和array的實作都是記憶體位置 用他的型態決定到底再做I/O的時候 要對多少byte做動作 所以 prt[0]這樣的code會過 所以 char*和char array根本試一樣的咚咚(所以間接操作ok) 只是compiler在compile時會有語法上的規定 but 安仔的code會當的理由還是不知道.....@@ -- ※ 發信站: 批踢踢實業坊(ptt.csie.ntu.edu.tw) ◆ From: 218.160.7.242