簡體   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