Re: [問題] 字元與字串的關係

看板C_and_CPP作者 (brotherD)時間6年前 (2018/01/24 11:32), 6年前編輯推噓2(6414)
留言24則, 9人參與, 6年前最新討論串2/2 (看更多)
※ 引述《zzss2003 (brotherD)》之銘言: : hi,魯蛇小弟我在看C How to program 6/e時,看到了這段話: : "The value of a string is the address of its first character" : 字串的值是第一個字元的位址 : 所以小弟我做了一個實驗,圖:https://imgur.com/a/wpuXV : 用GCC編譯的結果,這個string的值為h,並不是h的位址 : 請問各位大大,小弟的實驗在觀念上哪裡有錯誤嗎? 謝謝各位的建議,我把程式碼改成如下(不曉得是不是這樣貼?) <script src="https://ideone.com/e.js/5bzuCk" type="text/javascript" ></script> 並且畫了這張圖: https://imgur.com/a/2YrCK 那書上說的: The value of a string is the address of its first character,在我畫 的圖中所指的就是a,所以string"hello"的值就是0x2b825a9177a4 (有錯請指正,謝謝~) -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.248.26.157 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1516764761.A.BB3.html

01/24 11:42, 6年前 , 1F
/a/
01/24 11:42, 1F

01/24 12:02, 6年前 , 2F
可以建議Telnet Browser加入Html功能
01/24 12:02, 2F

01/24 12:49, 6年前 , 3F
/a/去掉 大家才可直接看圖
01/24 12:49, 3F

01/24 12:49, 6年前 , 4F
應該說去掉/a
01/24 12:49, 4F
已更正 ※ 編輯: zzss2003 (60.248.26.157), 01/24/2018 13:11:04

01/24 13:10, 6年前 , 5F
去掉a是沒有用的 上車囉
01/24 13:10, 5F

01/24 13:18, 6年前 , 6F
sorry 好像不是直接去掉 我菜雞
01/24 13:18, 6F

01/24 13:46, 6年前 , 7F
為什麼我看到 (⊙⊙) 是我眼睛業障重嗎?
01/24 13:46, 7F

01/24 14:02, 6年前 , 8F
你的程式碼長的像奶子
01/24 14:02, 8F

01/24 14:03, 6年前 , 9F
我也看到怪東西
01/24 14:03, 9F

01/24 14:03, 6年前 , 10F

01/24 14:04, 6年前 , 11F
原po貼的是這張 大家冷靜 我不該說去掉/a的 sorry
01/24 14:04, 11F
已更正回來,所以有其他的方式可以讓大家直接看圖不用點進去嗎?二樓的方式怎麼做啊 ※ 編輯: zzss2003 (60.248.26.157), 01/24/2018 14:06:12

01/24 14:28, 6年前 , 12F

01/24 14:35, 6年前 , 13F
右鍵 複製連結網址
01/24 14:35, 13F

01/24 15:52, 6年前 , 14F
回歸正題一下 你說的a沒問題 想請問一下h = h是啥意思呢
01/24 15:52, 14F
拍謝,沒寫清楚,第二行print出來的值是h ※ 編輯: zzss2003 (60.248.26.157), 01/24/2018 16:38:09

01/24 22:19, 6年前 , 15F
我猜是想說這個意思吧
01/24 22:19, 15F

01/24 22:19, 6年前 , 16F
printf("%p\n", str);
01/24 22:19, 16F

01/24 22:19, 6年前 , 17F
printf("%p\n", &str[0]);
01/24 22:19, 17F

01/24 22:24, 6年前 , 18F
你用 %c 輸出的結果是字元 不是地址
01/24 22:24, 18F
對pointer做dereference的結果本來就是h(字元)不是嗎?怎麼會是地址呢?

01/24 22:24, 6年前 , 19F
字串是好幾個連續字元組合,結尾帶 \0 結束
01/24 22:24, 19F

01/24 22:25, 6年前 , 20F
字串地址就是也就是這一串的開頭,會是第一個字元
01/24 22:25, 20F
※ 編輯: zzss2003 (60.248.26.157), 01/25/2018 10:18:48

01/25 17:46, 6年前 , 21F
我覺得樓上說的是對的 這句話的意思就只是str是存第一個
01/25 17:46, 21F

01/25 17:47, 6年前 , 22F
字元的位址這樣而已 不要想得太複雜
01/25 17:47, 22F

01/25 17:48, 6年前 , 23F
然後*p不是應該用%s來輸出嗎...你用%c當然只會輸出字元
01/25 17:48, 23F

01/25 21:21, 6年前 , 24F
哪裡 deref(*) 第一行直接印,第二行取ref(&)
01/25 21:21, 24F
文章代碼(AID): #1QP_vPkp (C_and_CPP)
文章代碼(AID): #1QP_vPkp (C_and_CPP)