C语言数组储存问题
3个回答
展开全部
c[3]是可以存储3个字符的,c[n]就是存储n个字符,n是int
整形常量.
对于,以上你提出的问题,定义一个字符数组
c[3],的确,他只可以储存三个字符,分别储存在c[0],c[1],c[2],但是,在C/C++中并没有检查数组是否越界或者是超界的功能,所以,在scanf(),语句中,我们输入的字符,C/C++是没有检查,所以,理论上我们只能输入两个字符,最后一个留给系统自动添加的\0,
但是,实际上,我们输入的字符.qwe是可以正确运行的,最后,系统也会自动添加\0,但是,添加的\0,就可能在数组定义之外了,可能就是系统在定义数组的之后,对于我们输入的其他字符也相应在数组定义之后的一连串空间中继续添加,所以,可以输入大于3的字符都可以正常输出,但是,会报错!错误是数组的访问越界了吧!以上纯属个人理解,仅供参考!希望对你有帮助!^_^.
整形常量.
对于,以上你提出的问题,定义一个字符数组
c[3],的确,他只可以储存三个字符,分别储存在c[0],c[1],c[2],但是,在C/C++中并没有检查数组是否越界或者是超界的功能,所以,在scanf(),语句中,我们输入的字符,C/C++是没有检查,所以,理论上我们只能输入两个字符,最后一个留给系统自动添加的\0,
但是,实际上,我们输入的字符.qwe是可以正确运行的,最后,系统也会自动添加\0,但是,添加的\0,就可能在数组定义之外了,可能就是系统在定义数组的之后,对于我们输入的其他字符也相应在数组定义之后的一连串空间中继续添加,所以,可以输入大于3的字符都可以正常输出,但是,会报错!错误是数组的访问越界了吧!以上纯属个人理解,仅供参考!希望对你有帮助!^_^.
展开全部
因为C语言的数组会有溢出,你定义数组是应该使其足够大,否则可能会报错
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
C的数据的边界是由程序员自己管理的,最好不要这样做,轻则把堆或是栈破坏了,程序会崩溃,重则有缓冲区溢出漏洞,给黑客可趁之机
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询