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

admin2020-01-10  34

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

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

答案A

解析 在对数组进行初始化时,如果对数组的全部元素赋以初值,定义时可以不指定数组长度,如char a[] = "THIS"。将字符指针变量初始化为一个字符串可以定义一个字符指针变量,并且初始化为一个字符串的首地址,如char *b="OK"。strlen函数统计字符串长度,遇到"\0"统计结束。sizeof用来获取类型或数据对象的长度,也即是一个这种数据类型的变量在内存中所占字节数。a数组’\0’之前有效字符有4个,由于字符串有效字符之后有一个’\0’也会被放入数组,char类型占一个字节,所以数组a所占字节数为1*5=5。b为指向字符串的指针,字符串长度为2,指针类型变量所占字节数为4。A选项正确。
转载请注明原文地址:https://jikaoti.com/ti/VmG0FFFM
0

最新回复(0)