问题 单项选择题

以下程序运行后的输出结果是 #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。

单项选择题 A1/A2型题
多项选择题