C 字符串长度显示不正确
我这里有3个代码C 字符串长度显示不正确,c,C,我这里有3个代码 在第一个中,我没有初始化字符串! 斯特伦在ans中显示“3” 在第二个中,我用3个字符初始化了它,仍然是相同的ans“3” 在第三节中,我用4个字符初始化它,输出为“4” 抱歉,伙计们,若这太明显了,但我是新来的,所以很困惑为什么在第一个代码的输出中显示“3” //1st #include<stdio.h> #include<string.h> int main() { char y[20]; printf("%d&quo
//1st
#include<stdio.h>
#include<string.h>
int main()
{
char y[20];
printf("%d",strlen(y));
return 0;
}
//2nd
#include<stdio.h>
#include<string.h>
int main()
{
char y[20]="yas";
printf("%d",strlen(y));
return 0;
}
//3rd
#include<stdio.h>
#include<string.h>
int main()
{
char y[20]="asds";
printf("%d",strlen(y));
return 0;
}
//1st
#包括
#包括
int main()
{
chary[20];
printf(“%d”,strlen(y));
返回0;
}
//第二
#包括
#包括
int main()
{
char y[20]=“yas”;
printf(“%d”,strlen(y));
返回0;
}
//第三
#包括
#包括
int main()
{
字符y[20]=“asds”;
printf(“%d”,strlen(y));
返回0;
}
您在1)案例中看到的是未定义的行为。
因为y
未初始化
还返回size\u t
,打印其返回值的正确格式为:
printf(“strlen(y)=(%zu)\n”,strlen(y))代码>遇到“\0”时,strlen的功能将停止
在第一个代码中,char y[20]未初始化。数组中的值可以是堆栈中剩余的任何值。碰巧是y[3]='\0'
所以strlen(y)可以是其他环境中的任何值也许你是对的,但我在在线编译器上尝试过,它们都给出相同的ans,但当我将“20”更改为“100”时,它给出了“4”作为输出,当我将其更改为“10”时,答案是“0”,这是模式吗?我是新来的,如果我用愚蠢的问题给你带来困难,我很抱歉!感谢您的帮助,sizeof()
函数也会返回size\t
?sizeof
不是函数,而是运算符。当type
只是一个数据类型时,您会看到很多sizeof(type)
,这是必需的表单。如果需要对象的大小,只需使用sizeof object
。无论如何,结果是类型size\u t
,对。(阅读本标准会有所帮助。)