gpt4 book ai didi

c - 为什么函数会根据容量返回不同的值

转载 作者:太空宇宙 更新时间:2023-11-04 05:04:08 24 4
gpt4 key购买 nike

我正在研究 C 语言中的 strlen() 函数,我看到一个函数,这个函数返回不同的值。如果数组容量已满,则返回错误结果。如果数组容量未满,则返回 true 结果。请问是什么原因?
非常感谢所有读者。
那就是函数

int myStrlen(char *s)
{
char *start;
start = s;
while (*s != 0)
{
++s;
}
return s - start;
}

和主要

int main()
{
char x[4] = "What";
printf("%d\n", myStrlen(x));
return 0;

}//Output: 21

其他主要

int main()
{
char x[5] = "What";
printf("%d\n", myStrlen(x));
return 0;

}//Output: 4

最佳答案

字符串 "What"char[5] 类型,因为尾随空字节。带有 char[4] 的定义会截断字符串并去除空字节。

由于在那种情况下缺少空终止符,myStrlen 调用未定义的行为。

就用

char str[] = "What";

在实际代码中没有任何明确的数组长度。


而且,正如@Olaf 在对您的问题的评论中所说:C 没有方法,只有函数!
方法在 C++ 中可用,它们是虚函数的别名,在 Java 中可用(我对此一无所知)。

Stroustroup 先生在他的书“The C++ Programming Language 4th Edition”第 20.3.2 章中谈到了 C++ 中的方法:

A virtual member function is sometimes called a method.

关于c - 为什么函数会根据容量返回不同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34698488/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com