[英]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.