有如下程序  #include <stdio.h>  #include <string.h>  main()  {   char a[]="THIS\0",*b="OK\0\0";   printf("%d,%d,%d,%d",strlen(a),

admin2022-04-01  31

问题 有如下程序
 #include <stdio.h>
 #include <string.h>
 main()
 {
    char a[]="THIS\0",*b="OK\0\0";
    printf("%d,%d,%d,%d",strlen(a),sizeof(a),strlen(b),sizeof(b));
 }
 程序运行后的输出结果是(          )。

选项 A、4,6,2,4
B、4,4,4,1
C、6,5,2,1
D、6,4,2,4

答案A

解析 strlen()函数求得参数中字符串的长度(不包括字符串结束符‘\0’);sizeof()运算符是求得参数这种类型所占存储空间的长度。题意中a是数组名,由于定义时省略维数大小,所以数组大小是初始化的字符个数,a的数组大小为6,综上:strlen(a)只计算字符‘T’、‘H’、‘I’、‘S’结果为4;sizeof(a)是求得数组a的大小,结果为6;另外指针b指向一个字符串“OK\0\0”.所以strlen(b)只计算字符‘O’、‘K’,结果为2,sizeof(b)求得指针占用存储空间的大小,结果为4,本题答案为A。
转载请注明原文地址:https://kaotiyun.com/show/Cnkp777K
0

最新回复(0)