首页 > 试题广场 >

执行以下代码段(程序已包含所有必需的头文件)会输出什么结果。

[单选题]
执行以下代码段(程序已包含所有必需的头文件)会输出什么结果()
    char a[] = "abc";
    char b[] = {'a', 'b', 'c'};
    printf("%d, %d", sizeof(a), sizeof(b));

  • 3, 3
  • 3, 4
  • 4, 3
  • 4, 4
sizeof(a)求得4,即abc\0的长度。
发表于 2022-01-16 10:20:28 回复(1)
char a[] = { 'a', 'b', 'c', 'd', 'e', 'f' };
    printf("%d\n", sizeof(a));        //6:求的是整个数组的大小,由于每个元素大小是1,所以结果是6
    // 如果是char p[]="abcdef";结果就是 7,要包含'\0'
    printf("%d\n", sizeof(a + 0)); //4:求的是数组首元素的地址长度,此处为32位     printf("%d\n", sizeof(*a));//1:求的是第0个元素的大小     printf("%d\n", sizeof(a + 1));//4:求的是第1个元素的地址长度,此处为32位
char* p = "abcdef";
    printf("%d\n", sizeof(p));//4   8:对指针变量求sizeof,32位机器在下是4,64位机器下是8
    printf("%d\n", sizeof(p+1));//4   8:指针变量+1跳过一个指向的对象,指指向b结果不变,仍然是指针
string s = "abcdef"
    sizeof(s);// 7, 后面还有个'\0'
    strlen(s);// 6,实际长度
综上,sizeof 字符数组,带不带'\0'看情况;sizeof 数组指针是指针长度。sizeof  字符串也会带上'\0'
编辑于 2022-02-17 18:48:58 回复(2)
好难
发表于 2023-02-11 22:39:28 回复(0)
a存的字符串常量包含/n B包含的是字符常量每个一个字节
发表于 2022-01-25 13:50:27 回复(0)