数组初始化超界(c语言中char a[ ][3]={’123’,’1’} 是对的吗如果是错的 怎么错)
![数组初始化超界(c语言中char a[ ][3]={’123’,’1’} 是对的吗如果是错的 怎么错)](/static/images/content_image/dolphins-1869337_1920.jpg)
本文目录
c语言中char a[ ][3]={’123’,’1’} 是对的吗如果是错的 怎么错
语法上是允许的。
char a={’123’,’1’}; 声明 a 是 char 型 2 维数组,并初始化。
第一维不定,由初始化值确定,第二维大小是 3。
根据初始化,可以定出 第一维是 1。
初始化用的是字符常量,但 ’123’ 数值超界,丢弃溢出部分,留下 ’3’.
所以 , 等于声明了:
char a={’3’,’1’,’\0’};
若打印:
int i; for (i=0;i《3;i++) printf("%c|",a); 将得到 3|1|空白|
输出格式里加了一条竖线,为了让你看见空格。
c语言中关于字符数组长度的问题
这个其实很简单,
你定义成
char c={"i am happy"};
相当于
char c={’i’,’ ’,’a’,’m’,’ ’,’h’,’a’,’p’,’p’,’y’,’\0’};
虽然后面的初始化时,给了11个数据,但实际上只有前10个相应赋给了c
最后一个 ‘\0’ 没有赋值给数组c了。
所以还是不会有问题。
另外,这个还与编译器有关,有的编译器这样会报错。数组超界。
![数组初始化超界(c语言中char a[ ][3]={’123’,’1’} 是对的吗如果是错的 怎么错)](/static/images/content_image/cappuccino-1869731_1920.jpg)
更多文章:
sqlite格式的视频怎么打开(.sqlite是什么文件,用什么工具打开)
2026年11月7日 05:30
element ui面试题(用element-ui ELDialog和ELTable遇见的坑)
2026年11月7日 04:40
中文自动翻译成英语的输入法(有没有一种输入法能将打出来的中文自动变成英文)
2026年11月7日 02:10
equals to(为什么有些英文句子要用的是“equals to that of” 这个that和of之间还可以加名词吗)
2026年11月7日 01:50
default values(电脑开机后出现all settings was reset to default values.)
2026年11月7日 01:20
structured reviewing翻译(软件测试的英文翻译)
2026年11月7日 00:50






