"initialization makes integer from pointer without a cast" 阵列初始化逐渐减弱

"initialization makes integer from pointer without a cast" waning in array initialization

我现在开始学习C,我想知道为什么会收到警告。我声明了一个二维字符数组,但是为什么字符"d"不被允许?

char array[3][3] = {{1,"d",3},{3,2,1},{2,1,3}};

将"d"替换为'd'

'd'是一个字符

"d" 是一个字符串

TL;DR -- "d" 不是一个字符,它是一个 字符串'd'是一个字符。


为了详细说明,我们使用单引号''来表示一个char。它表示 char。该值是 int 类型。

OTOH,双引号 " " 用于表示字符串。它返回 字符串 的基地址。那是一个指针。

在您的代码中,您使用了 "d",其中 returns 指向 字符串文字 的指针来初始化 char 变量,它需要 int 类型的值。因此警告。