笔者在c语言的学习中,遇到了以下问题,请看下列代码:
(下列代码均运行于VS2022社区版)
#include <string.h>
#include <stdio.h>
int main()
{
char word[] = { 'B','o','o','k','s'};//创建并初始化一个名为word的字符类型数组
char words[] = "Books";//创建并初始化一个名为words的字符数组
printf("数组word占用%d\n", sizeof(word));//打印数组word的大小(字节)
printf("字符串words占用%d\n", sizeof(words));//打印字符串words的大小(字节)
return 0;
}
输出结果为:
“数组word占用5”
“字符串words占用6”,
相同的字符,为什么打印结果却不同呢?
我们打开本地调试,并打开监视窗口
我们发现,编译器在编译时,在words中插入了一个'\0',而对于word来说,没有做任何改动。