Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 为什么这个代码的输出是4?_C_String_Sizeof - Fatal编程技术网

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

C 为什么这个代码的输出是4?,c,string,sizeof,C,String,Sizeof,我使用sizeof函数来计算字符串的大小。 它应该打印2。但为什么是4? 这是代码 #include <stdio.h> #include <string.h> void main() { char *b = "ab"; printf(" %d ",sizeof(b)); //printf("%s ",b); } #包括 #包括 void main() { char*b=“ab”; printf(“%d”,尺寸(b)

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

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

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

    printf(" %d ",sizeof(b));
   //printf("%s ",b);
}
#包括
#包括
void main()
{       
char*b=“ab”;
printf(“%d”,尺寸(b));
//printf(“%s”,b);
}

因为平台上的指针是4字节。或者32位,如果你愿意的话


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

因为平台上的指针是4字节。或者32位,如果你愿意的话


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

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

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

char *b = "ab";
在您的例子中,
b
是指向文件中只读字符串文本的指针。案例中的指针在系统中的大小为4

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

Sizeof返回传递给它的变量的大小(字节)

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

printf("%p\n",b);
输出示例如下:

0x8048555

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

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

Sizeof返回传递给它的变量的大小(字节)

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

printf("%p\n",b);
输出示例如下:

0x8048555


Thanks@iharob.I知道了。Thanks@iharob.I明白了。#include#include void main(){char str[]=“asdas”;printf(“%d”,sizeof(str))}@a874
char str[]=“asdas”
意味着str现在是一个字符数组,填充了
{'a'、's'、'd'、'a'、's'、'\0'}
。每个C字符串都有一个\0终止符。@Magisch我知道,但您写了“Sizeof返回以字节为单位传递给它的变量的大小”,然后Sizeof(str)应该打印一个等于48的值,因为一个字符的大小是64位上的8字节platform@a874您传递了str,它是一个字符数组。sizeof()将打印此数组的大小。在传递不是数组的指针之前。在这种情况下,sizeof()打印指针的大小。指针=!数组#include#include void main()
意味着str现在是一个字符数组,填充了
{'a'、's'、'd'、'a'、's'、'\0'}
。每个C字符串都有一个\0终止符。@Magisch我知道,但您写了“Sizeof返回以字节为单位传递给它的变量的大小”,然后Sizeof(str)应该打印一个等于48的值,因为一个字符的大小是64位上的8字节platform@a874您传递了str,它是一个字符数组。sizeof()将打印此数组的大小。在传递不是数组的指针之前。在这种情况下,sizeof()打印指针的大小。指针=!排列