有如下程序 #include <stdio.h> #include <string.h> main() { char name[10] = "c-book"; char* str = name; printf("%d,%d,%d,

admin2021-04-28  29

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

选项 A、10,6,4,6
B、11,6,11,6
C、11,6,1,6
D、10,7,1,7

答案A

解析 由一维数组初始化的知识可知,name[10] = "c-book",即name[10] = "c-book\0\0\0\0"。sizeof用来获取类型或数据对象的长度,也即是一个这种数据类型的变量在内存中所占字节数。strlen函数统计字符串长度,遇到"\0"统计结束。字符指针变量和字符数组在内存中的存储情形不同,数组指的是按照数组长度分配的若干存储空间,在内存中字符类型变量占1个字节;而指针只是一个存储字符串首地址的存储空间,指针占4个字节。所以sizeof(name)=1*10=10, strlen(name)=6,sizeof(str)=4, strlen(str)=6。A选项正确。
转载请注明原文地址:https://kaotiyun.com/show/hXtp777K
0

最新回复(0)