分段错误,如果我不说int i = 0

1 c arrays int initialization segmentation-fault

void removeVowels(char* array){
  int i,j,v;
  i=0;

  char vowel[]={'a','e','i','o','u'};
  while(array[i]!='\0')
  {
    for(v=0;v<5;v++)
    {
      if (array[i]==vowel[v])
      {
          j=i;
          while(array[j]!='\0')
          {
            array[j]=array[j+1];
            j++;
          }
          i--;
          break;
      }
    }
    i++;
  }


}
Run Code Online (Sandbox Code Playgroud)

在功能中,removeVowels()如果我不包括i=0; 并且只是说int i;为什么它会给出分段错误?不是自动的0吗?

完整代码在这里

jua*_*nza 5

是不是自动0?

不,不是.它i具有自动存储功能,因此其默认初始化使其保持未初始化状态,并保持不确定的值.在初始化之前从中读取它是未定义的行为.