指標問題 |
尚未結案
|
syao
初階會員 發表:66 回覆:63 積分:25 註冊:2005-02-02 發送簡訊給我 |
|
Royce520
高階會員 發表:18 回覆:157 積分:100 註冊:2002-09-13 發送簡訊給我 |
|
harpist
資深會員 發表:3 回覆:251 積分:430 註冊:2002-10-03 發送簡訊給我 |
|
syao
初階會員 發表:66 回覆:63 積分:25 註冊:2005-02-02 發送簡訊給我 |
|
syao
初階會員 發表:66 回覆:63 積分:25 註冊:2005-02-02 發送簡訊給我 |
|
Stallion
版主 發表:52 回覆:1600 積分:1995 註冊:2004-09-15 發送簡訊給我 |
插個花~
>//> p= "hello">//正確,因為此行宣告及定義一起來,所以compiler知道,會隱喻的將p指向一個由COMPILER產生的空間,該位址空間內容是hello,指標是指向位址的,不是嗎? *p = "hello"; //不正確,既然p是宣告為字元指標了,所以*p可以接受的是將一個字元存入其指向的內容,而不是字串!要寫也要寫成 p = "hello"; ,為何呢?上述說過,hello是由COMPILER產生的位址空間,再一次!指標是指向位址的,不是嗎? 請參考! -----------------------
|
syao
初階會員 發表:66 回覆:63 積分:25 註冊:2005-02-02 發送簡訊給我 |
|
Stallion
版主 發表:52 回覆:1600 積分:1995 註冊:2004-09-15 發送簡訊給我 |
引言: char *p = (char*)malloc( 50 * sizeof(char)); scanf("%s",p); printf("%s\n",p); char *p; p = "hello"; 差別在哪?? 感覺只是 scanf(%s,p); 它是告知p指向的空間要存放%s字串型態 而 p 只是char 指標它所指向的空間只能存放字元標準C語言的字串與字元陣列差別何在?前者只是以零字元為結尾而已,所以對你所問的問題,這一點要先釐清。 以第一個範例:向系統要求50個BYTES的大小空間,之後按其位址所在,逐一將鍵盤所敲入的字元,存入其中,然後以零為結尾。 以第二個範例:一個字元指標,指向由系統配置的一個常數字串空間的啟始位置,然後指標可以遍歷該常數字串的內容。 上述兩個範例有何關連?其實都是在用指標操作記憶體而已,而每次操作記憶體的內容,都是以一個BYTE為單位,不要被第一個範例的FORMAT格式搞昏了!改成c,看看與%s有何不同!就知道他如何處理字串與字元陣列的差別! ----------------------- Practice makes perfect. |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |