1
#include <stdio.h>

int main()
{
        char * name  = "bob";
        int x = sizeof(name);
        printf("%s is %d characters\n",name,x);
}

我有上面的代码。我想打印这个字符串中的字符数。它继续打印8而不是3. 为什么?

4

3 回答 3

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);
}
于 2013-11-08T14:51:17.310 回答
1

用于strlen查找字符串的长度。

每个字符至少有 1 个字节宽。它打印8是因为sizeof获得了一个指向的指针,bob并且在您的机器上,一个指针是8字节宽的。

于 2013-11-08T14:53:33.800 回答
0

strlen为您提供字符串中的字符数。 sizeof以字节为单位为您提供对象的大小。在您的系统上,类型的对象char *显然是 8 字节宽。

于 2013-11-08T14:54:22.437 回答