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

admin2022-10-24  26

问题 有如下程序
 #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/aHkp777K
0

最新回复(0)