C 为什么这个代码的输出是4?
我使用sizeof函数来计算字符串的大小。 它应该打印2。但为什么是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)
#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))}@a874char 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()打印指针的大小。指针=!排列