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

时间:2016-02-05 21:03:40

标签: c string sizeof

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

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

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

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

3 个答案:

答案 0 :(得分:1)

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

注意:使用void main()作为main()的签名表示您正在从旧书中学习,请小心!

答案 1 :(得分:1)

$string = '[embed]https://www.youtube.com/watch?v=L3HQMbQAWRc[/embed]'; $string = str_replace(['[embed]', '[/embed]'], '', $string); 是一个关键字,而不是一个函数,它以字节为单位告诉您变量的大小。变量sizeof是一个指针,其大小(在您的系统上)是4个字节。如果您想要字符串的长度,请使用b函数。

答案 2 :(得分:1)

char *b = "ab";

在您的情况下,b是指向文件中只读字符串文字的指针。在您的情况下,指针在系统中的大小为4.

如果您想了解长度,可以使用strlen()这样做。

Sizeof以字节为单位返回传递给它的变量的大小。

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

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

输出的示例是:

  

0x8048555