[問題] 指標算數運算的問題

看板C_and_CPP (C/C++)作者 (一億呆瓜斯坦幣)時間16年前 (2009/03/31 15:01), 編輯推噓3(301)
留言4則, 2人參與, 最新討論串1/1
可能是小弟觀念不清楚, #include<stdio.h> #include<stdlib.h> int main(void) { char a[3][10]={"Tom","Lily","James"}; char *ptr=a; puts(a+1); puts(ptr+1); system("pause"); return 0; } ------------執行結果------------------- Lily om 請按任意鍵繼續... 上面這個看起來很基礎的指標程式, 照理說a與ptr是指向同一個位址, 作相同的運算但是指向的位址卻不同了!! 一直想不透為什麼, 希望有高手能幫我講解一下這段程式的觀念, 謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.115.70.49 ※ 編輯: zmc0076 來自: 140.115.70.49 (03/31 15:13)

03/31 15:12, , 1F
a是相當於char ** 所以+1等於移動一個char *
03/31 15:12, 1F

03/31 15:13, , 2F
你把a指定給char * 所以+1是移動一個char
03/31 15:13, 2F

03/31 15:16, , 3F
a 是 char (*)[10],不是 char**,a+1 是增加 10 bytes
03/31 15:16, 3F

03/31 15:29, , 4F
阿~打錯了~前半部樓上才對
03/31 15:29, 4F
文章代碼(AID): #19qR_30C (C_and_CPP)
文章代碼(AID): #19qR_30C (C_and_CPP)