→ james732:如果存的是英文 char *s = "abcde"; 的話,你理解嗎? 10/26 12:44
→ stupid0319:char是1BYTE,只是一個單位不一定只能放文字 10/26 12:44
推 purpose:>文字怎麼能夠做指標? 你需要去翻書學習指標了 10/26 12:44
→ mabus:為什麼int* = char*的時候,總是不能? 10/26 12:48
→ stupid0319:可以開WinHex看記憶體長什麼樣子 10/26 12:49
推 loveme00835:我只能說, 這是語言的規則, 限制了一些型態的操作把可 10/26 12:51
推 loveflames:你沒做轉型啊 10/26 12:51
→ loveme00835:寫性降低來換到更高的安全性, 在 C 裡不同型態有他的 10/26 12:52
→ loveme00835:限定操作方法, 你用這個語言就要按照規定來 10/26 12:53
也就是說,int*和char*是一樣的,只是規則限制它們必須是不一樣的。對嗎?
int我還能理解,可是char就不太能理解了...。
※ 編輯: mabus 來自: 125.224.71.13 (10/26 13:03)
推 loveflames:abc還是數字是看程式如何解讀,不然一樣都是1跟0的組合 10/26 12:57
→ x000032001:文字就用ASCII阿 10/26 13:02
那int *s = "abcde";是不允許的,是因為已經分成int和char兩種規則了,對嗎?
但是它們是一樣的東西,對嗎?
※ 編輯: mabus 來自: 125.224.71.13 (10/26 13:07)
→ loveme00835:就跟前面幾篇的情況一樣, 編譯器把你 "..." 裡的東西 10/26 13:04
→ loveme00835:存在某塊記憶體裡, 再讓你的指標指到那裡去 10/26 13:05
→ james732:int *s = (int *)"abcde"; //OK 10/26 13:13
→ james732:你要先知道 "abcde" 到底是什麼 10/26 13:13
推 loveflames:你要用int*來解釋"abcde"的話,就會變成0x44434241 10/26 13:14
推 HudsonE:一二三四五六七八 <= 這只是字型檔教程式怎麼把它們畫出來 10/26 13:48
→ HudsonE:並不是存一個 "一" 在記憶體裡 10/26 13:49