Dúvida com sizeof

E ae povo tô com uma dúvida porque acontece isso

char *texto = "ISTO É UM TESTE";
char texto[15] = "ISTO É UM TESTE";

quando dou sizeof no primeiro retorna 4 e no segundo retorna 15? Eu gostaria de uma explicação logica para isso.
Obrigado

Opa, tudo bem Julio!

Cara é bem simples, quando você usa sizeof(…) em uma string desse tipo:
char texto[20] = "teste!!!";
sizeof vai retornar 20, pois você alocou 20 bytes. O tipo char possui 1 byte, mesmo que você não use os 20 bytes eles estão alocados.

Se você tentar sizeof(…) em algo do tipo:
int16_t num[20] = { ..... };
sizeof vai retornar 40, pois você alocou 40 bytes. O tipo int16_t é um inteiro de 2 bytes. Cada índice possui 2 bytes. Então 2x20 = 40.

Agora vai a explicação para sua pergunta,
char *texto = "...";

Quando você usa * indica que você está apontando para algum endereço na memória física do seu computador.

Neste exemplo que você citou, a variável char *texto; aponta para o primeiro endereço seu vetor char. Ou seja aponta para o endereço do indice zero.

Este endereço é um número hexadecimal de 32 bits algo do tipo 0x40A0C0 que equivale a 4.235.456 em decimal. Por este motivo sizeof retorna 4 bytes, sizeof está retornando o tamanho do endereço da memória, e este endereço está está contido em *texto.

Este é assunto muito longo vou parar por aqui, se continuar com dúvidas por favor poste aqui no forum que tentaremos ajudar.

Tente pegar esta variável *texto e dar um print nela, vai imprimir um número hexadecimal. Jogue na calculadora do windows e mande converter para decimal, você vai ver que tem 32 bits.

printf("%p\n", texto);

Putzz mano valeu demais essa foi a melhor explicação que ja vi eu programo em c e c++ mas é por hobby eu trabalho é com desenvolvimento web eu não fazia ideia da profundidade dessa linguagem sempre escutei falarem bem dela mas sempre achei um pouco obscura e complexa demais.
Vejo que trabalhar com a memoria é algo meio complicado mas com muitas vantagens.

Resumindo…
C enxerga sua memória RAM como um gigantesco vetor. Simples assim.

Estamos ae pra ajudar.