无法将char数组初始化为c中的变量

Can't initialize char array to a variable in c

使用Turbo c++初始化char变量数组时出现如下错误代码

int gd=DETECT,gm,i,d=0,x,y;
char s[12]={"3","4","5","6","7","8","9","10","11","12","1","2","[=10=]"};
initgraph(&gd,&gm,"..\BGI");

但是当用于初始化 s[12][3] 时,初始化列表工作正常!

"3"'3'有区别。

  • "3" 是字符串文字
  • '3'是字符常量(吹毛求疵:整型字符常量)

此处,要初始化 char 类型的数组,您似乎需要(用大括号括起来的)字符常量列表,而不是字符串。

but while using s[12][3] works fine

好吧,你正在初始化 数组

故事的寓意:如有疑问,请检查数据类型!!

您正在尝试存储 char,而不是字符串,那么为什么要使用双引号?

"a"是一个字符串,'a'是一个字符。

你真正想要存储的是字符串,为此你需要一个二维数组,如下所示:

s[12][3] = {"3","4","5","6","7","8","9","10","11","12","1","2"};

你不能将10表示为一个字符,我的意思是'10'不存在。就数字而言,单个字符是从 0 到 9。因此,您需要一个表示 10 的字符串,例如 "10".

现在,您需要数组的第二个维度为 3,因为字符串 "10"(例如)是一个以 null 结尾的字符串,因此它的实际内容有 2 个字符,再加上 1 个字符空终止符,给出 3.


PS: Turbo-C++ 是一个古老的编译器。升级到 GCC 或其他任何东西,真的。

您需要更改:

char s[12]={"3","4","5","6","7","8","9","10","11","12","1","2","[=10=]"};

char s[13]={'3','4','5','6','7','8','9','10','11','12','1','2','[=11=]'};

因为 char 数组元素应该是 char 文字而不是字符串文字