字符数组与栈损坏(数组越界)

字符数组的输入

程序运行提示变量周围的栈损坏一般是数组越界的问题。
比如今天刷题的时候由于一些基础知识有些遗忘了,于是犯了一些低级错误。后来发现是数组越界的问题。
我另外写了这样一个测试程序:

#include <iostream>
int main()
{
	char a[5];
	scanf("%s",a);
	std::cout<<a;
}

然后我输入了5个字符,结果出现了如下提示:
在这里插入图片描述
如果你跟我一样对字符数组的知识有些遗忘,或许你会想:5个字符不正是数组a的最大容纳量吗?
但其实在输入字符数组时,最后一个字符系统需要设置为’\0’,因此如果数组容纳量为n,输入的字符最多为n-1个,否则就会出现数组越界的情况。

本人的理解是:栈损坏与栈溢出是两码事,因此这里就不讨论栈溢出的情况。以上只是本菜鸡刷题后的随笔,如果有问题还请大佬指正,谢谢!

发布了26 篇原创文章 · 获赞 5 · 访问量 445

猜你喜欢

转载自blog.csdn.net/weixin_43590232/article/details/103898348