第15行 为什么报非法访问内存

img

有两个问题:
1 temp没有初始化,对于未初始化的临时变量,值是不确定了。考虑下面的情况
str=“123”;
此时temp=i;的语句不会被执行,也就是temp的值是不确定的,可能很大,那么15行就会报错

2 考虑下面的情况:
str="321";
这种情况下temp=2;
程序运行到15行时,str[i+1]会将 str末尾的’\0‘ 覆盖,是一个潜在的风险。这样会导致下面的语句报错:
printf("%s\n",str);