Dirección de memoria valor positivo o negativo en c?

en c, intenté imprimir la dirección de la variable y la dirección de alguna función. Tengo uno es un valor negativo, el otro es un valor positivo. Mi pregunta es: ¿por qué C no representa en todo valor negativo o todo valor positivo?

Aquí está mi código:

int foo() { 
     return 0;
}

int main() {

    int a;
    printf("%d\n",&a);

    printf("%d\n",foo);

    return 0;
}

Aquí está el resultado:

-1075908992 134513684

Respuestas a la pregunta(10)

Su respuesta a la pregunta