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
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!
char texto[20] = "teste!!!";
int16_t num[20] = { ..... };
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.