作者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://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1631278122.A.0DF.html
1F:推 Schottky: 你要用 strlen() 09/10 20:54
2F:→ pfii1997119: 如果不用strlen 请问用sizeof这个方法是可行的吗? 09/10 20:55
3F:→ Schottky: 当然不行,它回传的是 sizeof(char*) 也就是 4 或 8 09/10 20:59
4F:推 pyfanfan40: Array传进function的方式是以pointer喔,所以一个poi 09/10 20:59
5F:→ pyfanfan40: nter就是8~ 09/10 20:59
6F:→ F04E: array pointer decay. 09/10 21:54
7F:→ F04E: void outstring(const char (&buffer)[3]) 09/10 21:57
8F:→ F04E: 4 09/10 21:58
9F:推 zebracoco: 你直接用指标啦 09/11 13:23
10F:→ pfii1997119: 谢谢各位的解答! 09/11 13:49
11F:→ pfii1997119: 直觉想到的解答也是指标 只是想说试试看不同方法 09/11 13:49