繁体   English   中英

无法将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","\0"};
initgraph(&gd,&gm,"..\\BGI");

但是在用于初始化s[12][3] ,初始化器列表可以正常工作!

"3"'3'之间有区别。

  • "3"是字符串文字
  • '3'是一个字符常量(对于nitpick:整数字符常量)

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

但是在使用s [12] [3]时效果很好

好了,您正在初始化arrays

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

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

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

您实际要存储的是字符串,为此,您需要一个2D数组,如下所示:

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个字符,再加上一个以null终止符为单位的字符串,则为3 。


PS:Turbo-C ++是古老的编译器。 确实可以升级到GCC或其他任何东西。

您需要更改:

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

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

由于char数组元素应为char文字而不是字符串文字

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM