Me parece que estas confundiendo la dirección de un elemento con la dirección almacenada en el elemento. Las cadenas "abeja" y "Abeja" no pueden almacenarse en las direcciones 4c69c y 4c6a0 porque cada una consta (incluyendo el '\0') de seis caracteres.
Si modificamos el programa un poco:
Su salida (en mi caso) es:
Un saludo
Si modificamos el programa un poco:
Código (c) [Seleccionar]
#include <stdio.h>
#include <string.h>
int main(void)
{
char *frase[] = {
"abeja",
"Abeja"
};
int i;
for (i = 0; i < 2; i++)
printf("frase[%d]: %p --> %s\n", i, (void *) frase[i], frase[i]);
if(strcmp(*frase, *(frase + 1)) > 0){
char *temp = frase[0];
frase[0] = frase[1];
frase[1] = temp;
}
puts("----");
for (i = 0; i < 2; i++)
printf("frase[%d]: %p --> %s\n", i, (void *) frase[i], frase[i]);
return 0;
}
Su salida (en mi caso) es:
Código [Seleccionar]
frase[0]: 0x004090bd --> abeja
frase[1]: 0x004090b7 --> Abeja
----
frase[0]: 0x004090b7 --> Abeja
frase[1]: 0x004090bd --> abeja
Un saludo