如果我仅写int a[10],只给a[0]赋值了10,那么后面没用到的长度里是啥,我想输出比如a[8]会给我什么值;
还有字符数组我写char a[10],输入“abc”,后面没用到的长度里是啥,我测试了下输出a[8]输出了一个类似方框一样的东西,请问是乱码吗
c语言数组长度过剩问题
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
2条回答 默认 最新
关注首先,自己可以输出代码试一试,这个就很清晰了
在C语言中,当你声明一个数组,但只为其中的一部分元素赋值,未被显式初始化的元素的值是不确定的。它们可以包含任意值,通常是内存中存储的随机数据,这被称为“垃圾值”。对于整数数组
int a[10],如果只为a[0]赋了值,其他元素的值是未定义的,可能是随机的,也可能是编译器和系统相关的。如果你尝试输出a[8],它将包含一个不确定的值。对于字符数组
char a[10],如果你将字符串 "abc" 存储在a[0]、a[1]和a[2]中,其他元素的值也是未定义的。如果你尝试输出a[8],它将包含未定义的字符,通常在控制台上显示为乱码或方框,因为它不是有效的字符。为了避免这种不确定性,最好在声明数组后,显式初始化所有元素。例如,你可以使用循环来初始化整数数组为零,或者使用字符串初始化来初始化字符数组。这样可以确保数组中的所有元素都有明确定义的值。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报