为什么这段代码的输出是4?

Why is the output of this code is 4?

我正在使用 sizeof 函数来计算字符串的大小。 它应该打印 2.But 为什么是 4? 这是代码。

#include <stdio.h>
#include <string.h>

void main()
{       
    char *b = "ab";

    printf(" %d ",sizeof(b));
   //printf("%s ",b);
}

因为在您的平台上指针是 4 个字节。如果您愿意,也可以选择 32 位。

注意:使用void main()作为main()的签名表明你正在从一本旧书上学习,小心!

sizeof 是关键字,不是函数,它告诉您变量的大小(以字节为单位)。变量 b 是一个指针,它的大小(在您的系统上)是 4 个字节。如果需要字符串的长度,请使用 strlen 函数。

char *b = "ab";

在您的例子中,b 是指向文件中只读字符串文字的指针。你的例子中的指针在你的系统中大小为 4。

如果你想知道长度,你可以使用strlen()来实现。

Sizeof returns 您传递给它的变量的大小(以字节为单位)。

有趣的事实:您甚至可以打印指针!

printf("%p\n",b);

输出示例为:

0x8048555