[C語言] 我這樣宣告char傳入值有差嗎已回收

看板Marginalman作者 (☆本季霸權 - 鄰座艾莉同)時間1年前 (2024/07/17 16:06), 1年前編輯推噓11(11035)
留言46則, 11人參與, 1年前最新討論串1/1
void func(char* str) { printf("%s\n", str); } void func(char str[]) { printf("%s\n", str); } 這兩個應該都沒差吧 還是有甚麼小小的差異 char string最後都有 '\0' 應該都可以印出來? -- https://i.imgur.com/w1UF4Ml.png
湊寶可愛,湊寶務實 https://i.imgur.com/gPLFtSw.png
你跟我說這個,我有什麼辦法 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.248.91.73 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1721203614.A.AEE.html

07/17 16:08, 1年前 , 1F
你認真嗎
07/17 16:08, 1F

07/17 16:10, 1年前 , 2F
感覺差不多吧 都指標
07/17 16:10, 2F

07/17 16:10, 1年前 , 3F
444444444
07/17 16:10, 3F

07/17 16:10, 1年前 , 4F
認真阿 我剛剛試跑都一樣 只是不知道差別
07/17 16:10, 4F

07/17 16:11, 1年前 , 5F
你這問ChatGPT就好了
07/17 16:11, 5F

07/17 16:11, 1年前 , 6F
你認真嗎
07/17 16:11, 6F
前面省略 ===== 總之,char* str 是一個指向字串的指標,而 char str[] 是一個直接存儲字串的字元陣 列。你可以根據需求選擇適合的方式來處理字串。 ===== 字元陣列跟指標有差嗎 我怎麼感覺一樣 ※ 編輯: Wardyal (60.248.91.73 臺灣), 07/17/2024 16:13:21

07/17 16:13, 1年前 , 7F
陣列不也是一組數據 讓一個指標指到頭嗎
07/17 16:13, 7F

07/17 16:14, 1年前 , 8F
ChatGPT 4o 說一樣
07/17 16:14, 8F

07/17 16:14, 1年前 , 9F
喔喔 我是問Copilot
07/17 16:14, 9F

07/17 16:14, 1年前 , 10F
我對C沒那麼熟 這個操作在其他語言可能會不一樣
07/17 16:14, 10F

07/17 16:15, 1年前 , 11F
其他語言第二種可能是傳值
07/17 16:15, 11F

07/17 16:15, 1年前 , 12F
呼叫的時候會有差嗎
07/17 16:15, 12F

07/17 16:15, 1年前 , 13F
比如 *str那個 不能用{a,a,a,a}直接用 但是str[]也許可
07/17 16:15, 13F

07/17 16:15, 1年前 , 14F
以 嗎 @露西亞 @二跑 @咕咕嚕
07/17 16:15, 14F

07/17 16:16, 1年前 , 15F
老實說 指標這用法最好別搞了 很早以前就說過
07/17 16:16, 15F

07/17 16:16, 1年前 , 16F
這會容易造成安全問題
07/17 16:16, 16F

07/17 16:16, 1年前 , 17F
那用哪個比較好 宣告char string的話
07/17 16:16, 17F

07/17 16:16, 1年前 , 18F
問就是改用string
07/17 16:16, 18F

07/17 16:16, 1年前 , 19F
應該說 你一定要用C嗎 你要幹啥?
07/17 16:16, 19F

07/17 16:16, 1年前 , 20F
或是傳參 總要用的吧 要丟到function的話
07/17 16:16, 20F

07/17 16:16, 1年前 , 21F
我在寫韌體 都是C
07/17 16:16, 21F

07/17 16:17, 1年前 , 22F
韌體大師
07/17 16:17, 22F

07/17 16:17, 1年前 , 23F
韌體沒辦法...如果是os跟驅動, 現在趨勢是Rush了
07/17 16:17, 23F

07/17 16:18, 1年前 , 24F
我記得我當年用Keil C好像都是string
07/17 16:18, 24F

07/17 16:18, 1年前 , 25F
兩個沒有哪個比較好,指標是指標,值是值,看你要幹嘛
07/17 16:18, 25F

07/17 16:19, 1年前 , 26F
如果不知道差別就都先用值,不然會改到原來的指標
07/17 16:19, 26F

07/17 16:19, 1年前 , 27F
ChatGPT說這兩個都是指標 第二種在C會轉成指標傳
07/17 16:19, 27F

07/17 16:20, 1年前 , 28F
真假,c這麼坑喔,強制轉指標
07/17 16:20, 28F

07/17 16:21, 1年前 , 29F
應該說當年C很愛用指標 ...C說是高階語言 但沒有現代
07/17 16:21, 29F

07/17 16:21, 1年前 , 30F
高階語言的特性 記憶體管理只有做半套
07/17 16:21, 30F

07/17 16:22, 1年前 , 31F
char array就是指標指向頭
07/17 16:22, 31F

07/17 16:22, 1年前 , 32F
C處理字串就是仿賽
07/17 16:22, 32F

07/17 16:23, 1年前 , 33F
C沒有字串的概念 只有字元指標字元陣列
07/17 16:23, 33F

07/17 16:23, 1年前 , 34F
然後還有unsigned char*當普通指標用的
07/17 16:23, 34F

07/17 16:26, 1年前 , 35F
所以遇到unicode時非常操蛋 還好韌體比較少這種
07/17 16:26, 35F

07/17 16:34, 1年前 , 36F
哪個語言的陣列會傳值啊
07/17 16:34, 36F

07/17 16:37, 1年前 , 37F
C++記得可以
07/17 16:37, 37F

07/17 16:37, 1年前 , 38F
C不行 記得
07/17 16:37, 38F

07/17 16:42, 1年前 , 39F
c++阿
07/17 16:42, 39F

07/17 16:42, 1年前 , 40F
加&才是指標
07/17 16:42, 40F

07/17 16:43, 1年前 , 41F
函式裡面的str應該是一模一樣的東西 要宣告應該第二種比
07/17 16:43, 41F

07/17 16:43, 1年前 , 42F
較好吧 比較能直觀看出來要傳入的值是char的陣列
07/17 16:43, 42F

07/17 16:43, 1年前 , 43F
喔喔 也是 可讀性好一點
07/17 16:43, 43F

07/17 16:48, 1年前 , 44F
用第一種比較好
07/17 16:48, 44F

07/17 16:50, 1年前 , 45F
= = 好
07/17 16:50, 45F

07/17 16:50, 1年前 , 46F
我個人會用1
07/17 16:50, 46F
文章代碼(AID): #1cbtkUhk (Marginalman)