推 LPH66: 請回去讀 C 語言教材裡有關字串的部份 12/10 17:41
→ LPH66: chdir 的引數是一個 C-style 字串
字串是字元陣列吧 12/10 17:42
→ descent: 你是要改變目前的工作目錄嗎? 這樣是做不到的, 12/10 18:07
→ descent: 就算你 chdir 成功, 程式結束後還是只會來原來目錄。 12/10 18:08
→ descent: 在原來目錄
是的 我想改變當下程式執行時的工作目錄 12/10 18:09
※ 編輯: lazy0813 (140.113.134.82 臺灣), 12/10/2020 21:54:08
→ loveme00835: 字串跟陣列有什麼關係? 誤解很深 12/10 22:33
→ oToToT: 樓上上,C字串跟陣列為什麼沒有關係@@? 12/11 01:39
推 b0920075: 你傳一個字元進去要幹嘛,他要的是字串阿 12/11 10:57
→ loveme00835: C-style string 描述的是記憶體內容, 而 char array 12/11 11:05
→ loveme00835: 則是描述型別, 以及語言預設的操作. 如果這兩者可視 12/11 11:07
→ loveme00835: 為等價, 那以這份程式碼來看, 我是不是可以說C-style 12/11 11:12
→ oToToT: array應該有蘊含長度是固定的意思,但是一個int64_t的長度 12/11 14:35
→ oToToT: 就是固定的,而若你要說int64_t array也不行,因為也會有 12/11 14:35
→ oToToT: byte order的問題,但是當然C字串跟字元陣列不同,但是不 12/11 14:36
→ oToToT: 可否認他們有很深的關係吧 12/11 14:36
→ loveme00835: 以記憶體的角度來說, 定義 char array 你是要到了一 12/11 14:54
→ loveme00835: 塊可以放連續數個 char 的空間, 但是這個空間要怎麼 12/11 14:54
→ loveme00835: 用, 該存字元與否? 要不要塞 '\0'? 還是單純把這塊空 12/11 14:54
→ loveme00835: 間當成 buffer? 當作小整數陣列使用? 都跟 C-style s 12/11 14:54
→ loveme00835: tring 所代表的涵義差很多. C-style string 是描述某 12/11 14:54
→ loveme00835: 一塊記憶體空間應該有的內容, 這和你要怎麼達到目的, 12/11 14:54
→ loveme00835: 和要用什麼型別都沒有關係 12/11 14:54
→ oToToT: 推測你想表示c-style string主要的含意是null terminated 12/11 16:23
→ oToToT: ,但是我的理解是c-style string除了null terminated外, 12/11 16:24
→ oToToT: 其呈現手法也會是一個array,內部存放許多字元(這裡的字元 12/11 16:24
→ oToToT: 不限於char,也可以是char16_t等等),所以字串跟陣列並不 12/11 16:25
→ oToToT: 是沒有關係。 12/11 16:25
→ loveme00835: 上面的 int64_t example 哪來的 array? 12/11 16:27
→ oToToT: 這裡我對於array的意涵僅僅只有一個連續包含同樣型別的記 12/11 16:36
→ oToToT: 憶體空間,所以若是你要使用int64_t作為陣列,我認為並沒 12/11 16:36
→ oToToT: 有問題,但是如果稱c style string是int64_t,就是不同的 12/11 16:36
→ oToToT: 思。int64_t可以是一個c style string,但他不會是所有的c 12/11 16:36
→ oToToT: style string 12/11 16:36
→ oToToT: 或者說int64_t可以存放一些c style string,但她不能存放 12/11 16:37
→ oToToT: 所有的c style string 12/11 16:37
→ oToToT: btw我前面的第二則推文似乎有點不知所云,如果有造成誤會 12/11 16:51
→ oToToT: 還請見諒QAQ 12/11 16:51
→ MOONRAKER: 「陣列本身就是指標函數」真是偉大的premise 12/14 14:31
→ MOONRAKER: 不如說整個程式都是指標函數好了 太偉大了 12/14 14:31
求大師解惑
※ 編輯: lazy0813 (140.113.134.82 臺灣), 12/14/2020 23:08:12
推 LPH66: 就, 其實你最開始的問題只不過是沒搞懂函數要什麼而已 12/16 02:41
→ LPH66: chdir 吃一個 C-style 字串, 所以你就用最一般讀字串傳字串 12/16 02:41
→ LPH66: 的方式傳進去就是你要的了 12/16 02:41
→ LPH66: 不需要額外加一些 * 啦 & 的--但至於為什麼不需要 12/16 02:42
→ LPH66: 其中一部份其實是後面大家在討論的東西 12/16 02:42
→ LPH66: 包含到底什麼東西能叫做 C-style 字串, 它跟陣列的關係等 12/16 02:43