c语言的size of,strlen什么意思

#include <stdio.h>
#include <string.h>
void main()
{
char x[]="string";
x[0]=0;x[1]='\0';x[2]='0';
printf("%d %d\n",sizeof(x),strlen(x));
}
输出的sizeof为什么是7,它与x[0]=0;x[1]='\0';x[2]='0';没关吗

sizeof函数是计算数据空间的字节数;

strlen函数是计算字符数组的字符数,以"\0"为结束判断,不包含结束字符'\0'。


举例说明如下:

int a;
char b[]="abcd";
printf("%d", sizeof(a));  // 输出变量a所占的内存字节数,输出4
printf("%d", sizeof(b));  // 输出字符数组b所占的内存字节数,输出5(5=4+1,1为结束字符所占的内存)
printf("%d", strlen(b));  // 输出字符数组b中字符的个数,输出4(不含结束字符''\0)

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-08-05
"string"为字符串,但凡字符串都会有一个结束符'/0'占一个,所以此时输出的x的大小就是7
第2个回答  2012-08-05
sizeof是C/C++中的一个操作符(operator),简单的说其作用就是返回一个对象或者类型所占的内存字节数。 与对象的内容无关
第3个回答  推荐于2017-09-08
函数 sizeof(T) 返回指定参数 T 所占内存的字节数,象 x 这个数组,因为初始化的是一个字符串,除了把 string 的内容写入外,还要再加一个 \0 的结束符,所以长度一共是 7 个字节,与其中所存储的内容无关。
strlen(x) 返回的是字符串从第一个字符到 \0 之前的字符个数,\0 等于 0,所以 x[0]=0 相当于 x[0]='\0'。
所以输出为:7 0本回答被提问者和网友采纳