看板 C_and_CPP 關於我們 聯絡資訊
( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 ) ( 未必需要依照此格式,文章條理清楚即可 ) 遇到的問題: (題意請描述清楚) 指標不是都是在記憶體裡嗎? 那printf出來的東西,不是都是一堆數字? 那字串是怎麼放到記憶體裡的? 例如"一二三四五六七八",用char*指定之後, 在記憶體是長什麼樣子呀? 還是他是像間接定址一樣,存了兩種東西, 一種是本來的資料,另一種是資料的位址? 不太能理解,為什麼要用char做指標,而不是用int之類的。 自己的理解是,文字怎麼能夠做指標? 記憶體裡不都是數字和abc...,應該沒有其他語系的代號吧? 字串也能用指標的原因是什麼? 是為了方便提取其中的資料嗎? 一直用這玩意,但是一直有疑惑, 與其找到指標為了什麼存在, 或是指標的概念是為什麼建立的, 比較想知道指標最常應用的地方..。 到現在不是很會應用操弄這個機制...。 不知道怎麼表達切確的疑問,不明之處還望指教! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 125.224.71.13
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