输出之间的差异

0 c

我对以下代码片段感到困惑,因为对于相同的字符串,输出分别为1和2.

#include<iostream.h>
#include<conio.h>
#include<stdio.h>
#include<string.h>
void main()
{
  char str2[1]="a",str3[]="a";
  printf("%d %d ",sizeof(str2),sizeof(str3));
  getch();
}
Run Code Online (Sandbox Code Playgroud)

sim*_*onc 6

char str2[1]="a"
Run Code Online (Sandbox Code Playgroud)

为您提供包含内容的单元素数组{'a'}.此数组缺少用于表示C字符串结尾的nul终止符,因此您将无法str2用作字符串.

str3[]="a"
Run Code Online (Sandbox Code Playgroud)

给你一个char数组,其中包含一个nul-terminator的空间 - {'a', '\0'}