选择题
有以下程序:
#include <stdio.h>
#include <string.h>
main()
{ char a[]='TEXT',*b='++',c[3]='1';
printf('%d,%d,',strlen(a),sizeof(a));
printf('%d,%d,',strlen(b),sizeof(b));
printf('%d,%d,\n',strlen(c),sizeof(c));
}
程序运行后的输出结果是______
【正确答案】
A
【答案解析】sizeof是运算符,在头文件中定义其参数可以是数组、指针、对象、函数等。它的功能是:获得保证能容纳实现所建立的最大对象的字节大小。strlen(*char)函数要在运行时才能计算,参数必须是字符型指针(char*),当数组名作为参数传入时,实际上数组就退化成指针了,它的功能是:返回字符串的长度。该字符串可能是自己定义的,也可能是内存中随机的,该函数实际完成的功能是从代表该字符串的第一个地址开始遍历,直到遇到结束符NULL,返回的长度大小不包括NULL。sizeof(a)求数组a所占空间的大小,包括字符串最后的'\0',所以sizeof(a)=5,strlen(a)=4。strlen(b)是指针指向的字符串长度,sizeof(b)是指针的大小。strlen(c)是字符串的长度,sizeof(c)是数组的长度。因此,输出4,5,2,4,1,3。故答案为选项A。