[问题] 使用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