看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《nomorejerry (m e l o)》之銘言: : ( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 ) : ( 未必需要依照此格式,文章條理清楚即可 ) : 各位板友好 : 剛寫到關於atof...atoi...的函式 : 以atof()為例 : ---------------------------------------- : char* s; double x; : s = "-1988.12E-25"; : x = atof(s); 在這裡 "-1988.12E-25" 是以「陣列」的形式被存放到程式的某處 , 有很多細節的部份需要搞清楚, 上面的程式碼等同於 : char* s; double x; const char (&charArray)[12] = "1988.12E-25"; const char *constPtr = &charArray[0]; s = const_cast<char *>( constPtr ); x = atof(s); 陣列參考那裡只是想讓你明白他的型態是什麼, 很多人都會把指標 跟陣列名稱搞混 : ---------------------------------------- : 1.想請問的是,在這裡的變數s是宣告成指向char型態的指標 : 為什麼 s 還可以給值呢? : 2.我修改上述程式 : char* s; char s1; : s1 = "-1988.12E-25"; : s = &s1; : x = atof(s); 上面的程式碼等同於 : char* s; char s1; const char (&charArray)[12] = "1988.12E-25"; s1 = charArray; // ... 我想到這裡錯誤應該很明顯, 我們沒辦法把一個char陣列assign到 char 變數去... : 結果編譯時會有錯,他說不能從const char 轉成 char 這個錯誤訊息錯誤阿 > < : 請板友解惑一下,謝謝 -- ╭───╮ ╭╮ ╭╮ 非常非常善良的你 ╭──╯ 非常我的你 ──╮╭──╮│──╯╭─╮╭──── ────────── ──╮│╭╮│╰─╮╭─╯│╭╭╮ 曾一瞬間展露笑容的你 ╭──╯╰╯│ │ ─╯╰╯││││ 曾接受我心意的你 ───╯╰──╯ ╯╰─╯╰╰╯ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.121.197.115 ※ 編輯: loveme00835 來自: 140.121.197.115 (08/05 15:52)
xatier:陣列名稱可以想成是一個const char* 型的指標, 指向的位址 08/05 16:01
xatier:定不變 08/05 16:01
loveme00835:如果像一樓所說, 就太浪費陣列所包含的資訊了, 考慮 08/05 16:11
loveme00835:這段程式碼 : http://paste.plurk.com/show/288965/ 08/05 16:12
nomorejerry:感謝樓上各位,一時忘記字串是以陣列方式呈現 08/05 16:23