【C言語】ポインタのオーバーフローは未定義動作

(warning) Comparison is wrong.
Result of ‘p+1’ can’t be 0 unless there is pointer overflow,
and pointer overflow is undefined behaviour.

比較が正しくありません。
ポインタのオーバーフローがない限り、
‘p+1’の結果はNULLにはなりえず、
ポインタのオーバーフローは未定義の動作です[(warning)pointerAdditionResultNotNull]

■.ポインタのオーバーフローは未定義動作

#include    <stdio.h>
int main(void) 
{
    for(char *p = "string"; p[0] != '\0';p++){
        if((p + 1) == NULL){    //★ダメ  
            printf("THEN\n");
        } else {
            printf("ELSE\n");
        }
    }    
}

有効なポインタ に定数を加算してもNULLポインタにはなりません。

例外として、ポインタがオーバーフローするとNULLポインタに
なるかもしれませんが
ポインタのオーバーフローは未定義動作なので
一切の動作保証がありません。