[問題] 使用sizof判斷陣列大小錯誤

作者: pfii1997119 (阿寬)   2021-09-10 20:48:40
開發平台(Platform): (Ex: Win10, Linux, ...)
Win10
編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
GCC
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
none
問題(Question):
使用sizeof判斷陣列的大小 無論是多少個字元 都是顯示8 bytes
餵入的資料(Input):
how
預期的正確結果(Expected Output):
3
錯誤結果(Wrong Output):
8
程式碼(Code):(請善用置底文網頁, 記得排版,禁止使用圖檔)
int main()
{
outstring("How");
}
void outstring(char buffer[])
{
int n = 0;
for (int i = 0; i < sizeof(buffer)/sizeof(buffer[0]); i++)
n++;
printf("buffer have %d characters\n, n);
}
補充說明(Supplement):
最多最多就是讀取8個characters
想了一下還是不太懂為什麼無法使用這個方法
感覺是有什麼觀念漏掉了 希望大家能給予一些觀念上的指導及建議 謝謝大家
作者: Schottky (順風相送)   2021-09-10 20:54:00
你要用 strlen()
作者: pfii1997119 (阿寬)   2021-09-10 20:55:00
如果不用strlen 請問用sizeof這個方法是可行的嗎?
作者: Schottky (順風相送)   2021-09-10 20:59:00
當然不行,它回傳的是 sizeof(char*) 也就是 4 或 8
作者: pyfanfan40 (噗嚕庭)   2021-09-10 20:59:00
Array傳進function的方式是以pointer喔,所以一個pointer就是8~
作者: F04E (Fujitsu)   2021-09-10 21:54:00
array pointer decay.void outstring(const char (&buffer)[3])4
作者: zebracoco (公子吃丙)   2021-09-11 13:23:00
你直接用指標啦
作者: pfii1997119 (阿寬)   2021-09-11 13:49:00
謝謝各位的解答!直覺想到的解答也是指標 只是想說試試看不同方法

Links booklink

Contact Us: admin [ a t ] ucptt.com