作者destkyo (萊茵哈特)
看板C_and_CPP
標題[問題] 奇怪 為何呼叫副程式之後大小改變了
時間Wed Jul 8 18:23:12 2009
#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
→ su31o4gj83:s3是個pointer, 而pointer都是4 bytes 07/08 18:49
→ su31o4gj83:至於s1算不算是個pointer, 這個我也想知道.... 07/08 19:05
推 world9918:算字串長度請用strlen(s3); 07/08 19:11
→ ilway25:y也可能是8喔 07/08 19:28