问题
单项选择题
以下程序运行后的输出结果是
#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。