在if语句的布尔表达式中使用指针

时间:2015-04-28 09:04:58

标签: c pointers

我收到的输入为argvargc,我希望根据输入返回TRUE为FALSE。我的代码是:

int is_valid_regexp(const char* regexp);
int main(int argc, char *argv[])
{   
  if (!is_valid_regexp(argv[1])){
    fprintf(stderr, "wrong regular expression format:%s", argv[1]);
    return(EXIT_FAILURE):
  }
  return (EXIT_SUCCESS);
}

int is_valid_regexp(const char* regexp)
{
  do{
    if(*regexp == '\\')
      return FALSE;
  }while (regexp++ != '\0');
  return TRUE;
}

程序执行然后停止工作。我认为if(*regexp == '\\') return FALSE有问题 - 如果我排除那部分,该程序运作良好。它与指针问题有关吗?

1 个答案:

答案 0 :(得分:0)

 }while (regexp++ != '\0');

这里,regexp是一个POINTER,它等于内存区域的地址。 regexp++只需在此指针的一个位置右移。由于指针的类型是size_t(unsigned __int32),因此您将跳转到字符串之外。 使用

`}while (*regexp++ != '\0');` 

解决您的问题。