c - 如果我不说 int i=0 就会出现段错误

标签 c arrays segmentation-fault initialization int

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++;
  }


}

在函数 removeVowels() 中,如果我不包含 i=0;只说 int i; 为什么会出现段错误?不是自动0吗?

完整代码 here

最佳答案

Isn't it automatically 0?

不,不是。它 i 有自动存储,所以它的默认初始化让它未初始化,持有一个不确定的值。在初始化之前读取它是未定义的行为

关于c - 如果我不说 int i=0 就会出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30987630/

相关文章:

c - 通过代码将标准输出重定向到 C 中的文件

c - 使用 OpenSSL 发送数据

c - 对于每个 int x : x+1 > x . ... 这总是正确的吗?

c - 我怎样才能把它变成 shellcode?

C++/C 虚拟/可嵌入文件系统 [交叉兼容(库)]?

arrays - 如何有效地生成一个包含 K 个介于 0 和上限 N 之间的非重复整数的列表

c++ - 删除字符串数组中的所有连续重复项

javascript - 在 React Native 中获取对象数组中的第一个元素

c# - 错误 : SIGSEGV when running application on Mono

c - 为什么当我尝试编辑此链接列表时出现段错误