问题
单项选择题
以下程序运行后的输出结果是 #include<stdio.h> #include<string.h> main(){ char x[]="STRING"; x[0]=0; x[1]='\0'; x[2]='0'; printf("%d%d\n", sizeof(x),strlen(x)); }
A.6 1
B.7 0
C.6 3
D.7 1
答案
参考答案:B
解析: 本题解题的关键是运算符sizeof和函数strlen的区别。运算符sizeof的功能是求出变量在内存中存放所需的字节数,函数strlen的功能是求出字符串的实际长度,不包含字符串结束标记'\0'。程序中使用"char x[]="STRING"; "定义了数组x,字符串"STRING"在内存中存放实际需要7个字节(字符'\0'需要占用1个字节),所以在定义x数组时,系统就为x数组划分了7个字节的存储空间,所以“sizeof(x)”的值为7。紧接着执行"x[0]=0; ",'\0’的ASCII码值等于0,所以该语句的作用是对x[0]赋予了字符串的结束标记,所以不管x数组后面元素值是多少,"strlen(x)"求出的结果都是0。