[問題] 奇怪 為何呼叫副程式之後大小改變了

看板C_and_CPP作者 (萊茵哈特)時間16年前 (2009/07/08 10:23), 編輯推噓1(104)
留言5則, 4人參與, 最新討論串1/1
#include<stdio.h> #include<string.h> void ch(char const s3[]) { printf("%s\n",s3); unsigned y=sizeof(s3)/sizeof(s3[0]); printf("%u\n",y); } int main() { char s1[]="abcde"; unsigned x=sizeof(s1)/sizeof(s1[0]); printf("%u\n",x); ch(s1); system("pause"); return 0; } 應該y,x的值會是一樣才對... 但跑出來X是6,y卻變成4...百思不解~請高手指教一下~感恩 -- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.165.184.84

07/08 18:49, , 1F
s3是個pointer, 而pointer都是4 bytes
07/08 18:49, 1F

07/08 19:05, , 2F
至於s1算不算是個pointer, 這個我也想知道....
07/08 19:05, 2F

07/08 19:11, , 3F
算字串長度請用strlen(s3);
07/08 19:11, 3F

07/08 19:28, , 4F
y也可能是8喔
07/08 19:28, 4F

07/08 20:17, , 5F
請見舊文: #19xs6Tzb
07/08 20:17, 5F
文章代碼(AID): #1AL7EJjg (C_and_CPP)