[問題] 幾個小問題請教

看板C_and_CPP作者 (哈哈)時間9年前 (2015/04/24 03:24), 9年前編輯推噓4(4028)
留言32則, 9人參與, 最新討論串1/2 (看更多)
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) C 問題(Question): 1)字元陣列 跟 字串 有差個 \0 請問多了這個 \0 會有怎麼樣的差別? 查了很多書 都只看到有差別 卻沒看到會怎樣 2) int a[5] = {1,2,3,4,5}; int *p = (int*)(&a+1); a) &a+1 我的理解是 取址後跳下一個址 i.e. 得到 &a[1]是嗎? b) (int*) 是用來 casting 嗎? 可是又多個* ? 3) char *pc = "hello" *pc++ 查過書是說 先 *pc 再 pc++ 可是我看書上 後置遞增算子 比 取址 優先權大 那不就應該 先 pc++ 再 *pc? 弄了好久還是沒解出來 只好向前輩請益了 謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 120.126.10.139 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1429817040.A.4E2.html ※ 編輯: baldhawk (120.126.10.139), 04/24/2015 03:24:39

04/24 07:00, , 1F
1.所有C字串處理相關funciton都是遇到 '\0' 停止,例如
04/24 07:00, 1F

04/24 07:02, , 2F
printf 的 %s、string.h 裡的都是只處理到 '\0'
04/24 07:02, 2F

04/24 07:03, , 3F
2.a 對, 2.b casting 成指向 int 的指標
04/24 07:03, 3F

04/24 07:11, , 4F
3. 後置運算產生的值是原本的值,不是改變後的值
04/24 07:11, 4F

04/24 07:12, , 5F
printf("%d %d", x, x++); 的值會是一樣的
04/24 07:12, 5F

04/24 07:13, , 6F
^印出來
04/24 07:13, 6F

04/24 07:52, , 7F
2.a 錯
04/24 07:52, 7F

04/24 07:59, , 8F
sorry,沒主意看到 &a+1 的 &,的確是錯的
04/24 07:59, 8F

04/24 08:00, , 9F
&x 的形態是 int (*)[2],+ 1 是下一個 array
04/24 08:00, 9F

04/24 08:01, , 10F
你要問的應該是 a + 1,此時 a decay 成 int*
04/24 08:01, 10F

04/24 09:11, , 11F
先謝謝樓上兩位大大指點 尤其C大的詳細說明 我會仔細慢慢看
04/24 09:11, 11F

04/24 09:12, , 12F
一早起來看到C大仔細解說 實在是很感謝阿!!
04/24 09:12, 12F

04/24 10:09, , 13F
你沒真的用過字串對不對。
04/24 10:09, 13F

04/24 10:55, , 14F
所謂沒有用過是指?我最多就是練習程式會用到
04/24 10:55, 14F

04/24 10:55, , 15F
但是沒有真的在某種情境下 去使用字串
04/24 10:55, 15F

04/24 11:08, , 16F
阿 我懂樓上意思了 你是說我沒用過lib 的 string fun.
04/24 11:08, 16F

04/24 11:09, , 17F
哈哈 確實沒用過 因為我是初學自修者 還在看基本的功能
04/24 11:09, 17F

04/24 11:45, , 18F
等等,我早上在幹嘛,printf 那個例子是 undefined
04/24 11:45, 18F

04/24 11:46, , 19F
behavior! 頭昏了我XD 總之例是錯的,你知道意思就好
04/24 11:46, 19F

04/24 12:22, , 20F
電腦語言凡是用看的都不叫學。
04/24 12:22, 20F

04/24 14:02, , 21F
樓上大大多次宣導此觀念耶!
04/24 14:02, 21F

04/24 16:09, , 22F
謝謝 真的 動手才學的紮實 我已經灌好dev囉
04/24 16:09, 22F

04/24 16:10, , 23F
謝謝C大 我會再仔細思考你的說明:)
04/24 16:10, 23F

04/24 21:59, , 24F
哦...不要用Dev
04/24 21:59, 24F

04/25 00:01, , 25F
toby大怎說呢?
04/25 00:01, 25F

04/25 00:17, , 26F
本板搜 dev-c++ 視窗
04/25 00:17, 26F

04/25 06:55, , 27F
舊版的dev-c++對於學反組譯其實是很好的入門,新的編譯器都
04/25 06:55, 27F

04/25 06:56, , 28F
會加入許多的保護機制,如security cookie或safeseh等,讓組
04/25 06:56, 28F

04/25 06:57, , 29F
語較為複雜,不適合入門;不過學c/c++語法則不建議再用舊版
04/25 06:57, 29F

04/25 07:02, , 30F
dev,因為很多地方不符合近幾年的語法標準了
04/25 07:02, 30F

04/25 07:22, , 31F
https://www.visualstudio.com/ <-免費的visual studio
04/25 07:22, 31F

04/25 14:26, , 32F
謝謝大大門的解說喔 獲益良多:)
04/25 14:26, 32F
文章代碼(AID): #1LEKRGJY (C_and_CPP)
文章代碼(AID): #1LEKRGJY (C_and_CPP)