#include <stdio.h>
int main()
{
char * name = "bob";
int x = sizeof(name);
printf("%s is %d characters\n",name,x);
}
我有上面的代码。我想打印此字符串中的字符数。它会一直打印8
而不是3
。为什么呢?
答案 0 :(得分:2)
sizeof()
返回字节大小。具体来说,它给出了存储操作数类型的对象所需的字节。在这种情况下,sizeof()
返回指向字符串的指针的字节大小,该字符串在您的计算机上为8字节,或64位。
strlen()
:
#include <stdio.h>
#include <string.h> // include string.h header to use strlen()
int main()
{
char * name = "bob";
int x = strlen(name); // use strlen() here
printf("%s is %d characters\n",name,x);
}
答案 1 :(得分:1)
使用strlen
查找字符串的长度。
每个字符至少1个字节宽。它打印8
,因为sizeof
获取指向bob
的指针,并且在您的机器上,指针为8
字节宽。
答案 2 :(得分:0)
strlen
为您提供字符串中的字符数。 sizeof
以字节为单位给出对象的大小。在您的系统上,char *
类型的对象显然是8字节宽。