Comparison between pointer and integer in C

后端 未结 8 1391
盖世英雄少女心
盖世英雄少女心 2021-01-05 06:00

I have a bit stupid question about program in C. My compiler says me: warning: comparison between pointer and integer. I really don\'t know why. I only want to writ

8条回答
  •  没有蜡笔的小新
    2021-01-05 06:29

    The biggest problem with that code is that, depending on your implementation, it might compile without error.

    The problem, as others have said, is that NULL is intended to represent a null pointer value, not a null character value. Use '\0' to denote a null character. (Or you can use 0, which is equivalent, but '\0' expresses the intent more clearly.)

    NULL is a macro that expands to an implementation-defined null pointer constant. A null pointer constant can be either an integer constant expression with the value 0, or such an expression cast to void*. Which means that NULL may be defined either as 0 or as ((void*)0) (among other variations).

    Apparently your implementation defines it as something like ((void*)0), which is why you got the warning message. (It could, and IMHO should, have been treated as a fatal error).

    So never try to use NULL other than as a null pointer constant -- and don't count on the compiler to warn you if you misuse it.

提交回复
热议问题