[問題] 指標輸出

看板C_and_CPP (C/C++)作者 (!?)時間13年前 (2013/03/07 01:22), 編輯推噓0(004)
留言4則, 4人參與, 最新討論串1/1
對於指標只有著微薄的概念如下: int aa = 5; int* bb = &aa; //指標變數bb內存放aa記憶體位址 printf("%d", *bb); //利用取值運算子取得bb指向的變數內容值 //output 5 目前為止都沒問題 接下來, 就遇到下面的問題了 char* buf = malloc(sizeof(char)*6); printf("%x \n", buf); snprintf(buf, 6, "%s", "hello"); printf("%s \n", buf); <-- 依照前述概念, 這邊為何不是*buf, 用取值運算子將malloc配置出的 記憶體空間內容值印出 ? printf("%x \n", buf); free(buf); 另外我發現這個程式片段的三個printf 分別會印出 02A83E hello 02A83E 無法理解... 同樣都是印出buf指到的那塊記憶體空間的內容值, 怎麼會有這樣的結果? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.192.6.20

03/07 02:06, , 1F
在你討論指標之前 你應該要先弄懂 C string 是怎麼回事
03/07 02:06, 1F

03/07 10:32, , 2F
printf看到%s時,會吧arg當pointer,看到%x時,把arg當值
03/07 10:32, 2F

03/07 11:03, , 3F
就是因為%s
03/07 11:03, 3F

03/07 12:06, , 4F
C string怎麼這麼煩
03/07 12:06, 4F
文章代碼(AID): #1HDtjhFo (C_and_CPP)
文章代碼(AID): #1HDtjhFo (C_and_CPP)