作者pfii1997119 ( )
看板C_and_CPP
標題[問題] 使用sizof判斷陣列大小錯誤
時間Fri Sep 10 20:48:40 2021
開發平台(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
想了一下還是不太懂為什麼無法使用這個方法
感覺是有什麼觀念漏掉了 希望大家能給予一些觀念上的指導及建議 謝謝大家
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 175.182.134.205 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1631278122.A.0DF.html
推 Schottky: 你要用 strlen() 09/10 20:54
→ pfii1997119: 如果不用strlen 請問用sizeof這個方法是可行的嗎? 09/10 20:55
→ Schottky: 當然不行,它回傳的是 sizeof(char*) 也就是 4 或 8 09/10 20:59
推 pyfanfan40: Array傳進function的方式是以pointer喔,所以一個poi 09/10 20:59
→ pyfanfan40: nter就是8~ 09/10 20:59
→ F04E: array pointer decay. 09/10 21:54
→ F04E: void outstring(const char (&buffer)[3]) 09/10 21:57
→ F04E: 4 09/10 21:58
推 zebracoco: 你直接用指標啦 09/11 13:23
→ pfii1997119: 謝謝各位的解答! 09/11 13:49
→ pfii1997119: 直覺想到的解答也是指標 只是想說試試看不同方法 09/11 13:49