谁能告诉我为什么我在这个C代码中出现分段错误?

时间:2015-10-26 22:09:00

标签: c

您好我刚刚开始使用C语言进行编程而我正在创建一个数组计数器,但是当我尝试运行时会出现分段错误:

//function to calculate the length of an array
int arr_length(char arr[]) {
  int i = 0;

  while(arr[i] != "\0") {
    i++;
  }

  return i;
}

1 个答案:

答案 0 :(得分:0)

while(arr[i] != "\0") {
   i++;
}

相当于:

char const* str = "\0";
while(arr[i] != p) {
   i++;
}

您正在将charchar*进行比较。它在大多数情况下评估为false。因此,您最终会访问超出有效限制的arr,从而导致未定义的行为。在您的情况下,这表现为分段错误。

您需要使用:

while(arr[i] != '\0') {  // Compare with the null character
   i++;
}