为什么我这个数组大小没确定,就循环不了

img


确定数组大小之前

img

确定数组a的大小之后

img

你没设置数组大小就只为数组分配了{0}中0这一个元素
这样子数组分配空间的长度就只有1个字节。
之后用scanf对数组赋值。如果输入的字符数大于1个,会造成数组下标越界。
多于的字符会写入到数组分配空间之后的未知空间中,可能循环变量i的空间地址就处于这块未知空间中,这样循环变量i的值就被意外的改变了,变成大于等于3就退出循环了。

int a[] ={0}表示a中只有一个元素,并不是不确定,所以在scanf("%s",a)这里的时候,直接超出a的空间大小导致内存出错。