使用 strlen 函数时出现意外输出
unexpected output while using strlen function
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
char *p;
p=calloc(10,sizeof(char));
printf("the address of pointer is %p and size of the string is %d",p,strlen(p));
return 0;
}
我使用 calloc 在堆中分配了 10 个字节的内存,我希望大小的输出为 10,但输出为
the address of pointer is 0x123e010 and size of the string is 0
为什么大小是 0 而不是 10
strlen
只是计算值不是 0x00
的字节数(也称为 NULL
,C 标准将其用于字符串终止符)。
由于calloc
分配内存后初始化为0x00
,strlen
returns 0 因为第一个字节已经是NULL
.
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
char *p;
p=calloc(10,sizeof(char));
printf("the address of pointer is %p and size of the string is %d",p,strlen(p));
return 0;
}
我使用 calloc 在堆中分配了 10 个字节的内存,我希望大小的输出为 10,但输出为
the address of pointer is 0x123e010 and size of the string is 0
为什么大小是 0 而不是 10
strlen
只是计算值不是 0x00
的字节数(也称为 NULL
,C 标准将其用于字符串终止符)。
由于calloc
分配内存后初始化为0x00
,strlen
returns 0 因为第一个字节已经是NULL
.