Como o terminador de cadeia '\ 0' tem o mesmo valor que a constante inteira 0?

Eu tenho o seguinte código -

#include <stdio.h>
#define LENGTH 5
int main(){
    char* ch[LENGTH] = {"Zero", "One", "Two", "Three", "Four"};
    char* pc;
    char** ppc;
    for(int i=0; i<LENGTH; i++){
        ppc = ch+i;
        pc = *ppc;
        while(*pc != 0){
            printf("%c ", *pc);
            pc = pc +1;
        }
        printf("\n");
    }
    return 0;
}

É um exemplo de indireção múltipla usando string.

A saída é

Z e r o 
O n e 
T w o 
T h r e e 
F o u r 

Aqui emwhile() loop em vez de*pc != '\0', *pc != 0 é usado.

Mas ambas as abordagens fornecem a mesma saída. Por que é tão?

questionAnswers(4)

yourAnswerToTheQuestion