小鲸鱼- 发表于 2018-8-19 18:50:49

数组为什么没有溢出呢?????

//将输入的小写的字母转换为相应的大写字母

void change(char str[])
{
    int i;
    for(i=0;str!='\0';i++)
      if(str>='a'&&str<='z')
            str-=32;
}
int main()
{
    char a;
//   fgets(a,10,stdin);
    gets(a);
    printf("数组a=%s\n",a);
    printf("数组元素a=%c\n",a);
    change(a);
    puts(a);
    return 0;
}

小鲸鱼- 发表于 2018-8-19 18:53:33

本帖最后由 小鲸鱼- 于 2018-8-19 18:55 编辑

.

小鲸鱼- 发表于 2018-8-19 18:54:33

无符号整形 发表于 2018-8-19 19:01:04

没有溢出,说明你很幸运
栈中,数组后面还有空间。(当然这样有可能导致未知的Bug,因为这样有可能改变到其它变量的值)

gpf谦默 发表于 2018-9-8 10:17:08

这本身就是一个bug   我之前做过测试当你的字符串超过一定的长度后就会报错

秋木叶 发表于 2018-9-8 11:05:58

因为C 语言太信任程序员了,C认为这个应该由程序员自己限制,不是编译器的责任。因而也造成了溢出漏洞
页: [1]
查看完整版本: 数组为什么没有溢出呢?????