比较抽象的一个问题,原理不明白

img

img


如图,如题,当我定义的S字符数组长度为3,则sum数组第一个数输出一直是0,后面的值则正确,当我把S数组长度设为4,则全部正确,这是为何

因为你以%s输入,是字符串,字符串以\0结尾,你数组长度只有3,越界了,把0写进了后面的内存里
至于到底把什么清零了那就不一定了

static int sum[10001];
在占用内存空间较大的局部数组声明的前面加static将其从堆栈数据段挪到全局数据段即可避开因局部数组大小超过默认堆栈大小1MB造成程序不能正常运行的问题。