#include<stdio.h> #include <string.h> void main() { char x[]="STRING"; x[0]=0; x[1]='\0'; x[2]='0';

#include<stdio.h>
#include <string.h>
void main()
{
char x[]="STRING";
x[0]=0;
x[1]='\0';
x[2]='0';
printf("%d\t\t%d\n",sizeof(x),strlen(x));
}
谁能给我解释一下这个程序啊,我不能理解

char x[]="STRING";
这里:
x[0]='S';
x[1]='T';
x[2]='R';
x[3]='I';
x[4]=N';
x[5]='G';
x[6]='\0'; // 结束符号

sizeof(x):计算x数组的内存长度,即7个字符单元,所以是7

strlen(x):计算x数组字符长度,如果是NULL(0)就不算,如果遇到'\0'(结束符)就结束,且'\0'不计入字符数

很清楚了吧?不懂hi我
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-09-11
该代码的输出为:
7 0
关键字sizeof计算的是数组x的初始化的长度,包括结束符'\0',所以是7.
而函数strlen()根据字符串结束符'\0,也就是数值0作为字符串结束标记,由于有赋值语句x[0] = 0,就是说数组的第一个字符就是0,所以输出是0。
第2个回答  2012-09-11
#include<stdio.h>
#include <string.h>
void main()
{
char x[]="STRING";//定义字符串x="STRING"
x[0]=0;//x[0]=0
x[1]='\0';//其他不用定义了。x是一个空字符串
x[2]='0';
printf("%d\t\t%d\n",sizeof(x),strlen(x));//结果7 0
}本回答被提问者和网友采纳
第3个回答  2012-09-11
字符串以0值结尾。
x[0] = 0;就截断了字符串。
x[1] = '\0'起到了同样的截断效果。
x[2] = '0'给第3个位置赋值了一个字符。
sizeof (x)是输出x字符串占物理内存的大小,7
strlen (x0是输出有效字符的个数,因为x[0] = 0已经截断了字符串。所以有效字符数是0。
相似回答