aula 186

Por que não usamos & ao ler uma string com a função scanf?

Você já se perguntou por que não usamos o operador & ao ler uma string com a função scanf?

Para entender isso, a primeira coisa que precisa estar claro é: a função scanf receber o endereço de memória onde deve salvar o que foi lido!

Como já vimos, uma string é um vetor de caracteres e, como já foi dito, um vetor, independente do tipo, fica organizado na memória de forma sequencial, ou seja, uma posição após a outra.

A novidade agora é que apenas o nome do nosso vetor já é um ponteiro para o início do vetor, ou seja, já é um ponteiro para a primeira posição de memória do vetor. Como um vetor fica armazenado na memória de forma sequencia, sabendo qual é a primeira posição, podemos acessar todas as demais.

Para confirmar esta informação, observe o código a seguir. Seja um vetor chamado palavra. Ao imprimir, usando %p (para imprimir um endereço de memória), apenas o conteúdo de palavra, ou &palavra ou ainda &palavra[0] teremos exatamente o mesmo endereço de memória, pois são três formas diferentes de acessar a primeira posição do vetor palavra.

*/

          Aula 186: Por que năo usamos o & ao ler uma string com a funçăo scanf?

          Código escrito por Wagner Gaspar
          Maior de 2021

*/

int main(){

    char palavra[100];

    scanf("%100[^\n]", palavra);
    printf("%s\n", palavra);

    printf("%p\n", palavra);
    printf("%p\n", &palavra);
    printf("%p\n", &palavra[0]);

    return 0;
}

Deixe um comentário

cinco × um =

Wagner Gaspar

Capixaba de São Gabriel da Palha, Espírito Santo. Bacharel em Ciência da Computação pela Universidade Federal do Amazonas e mestre em informática pela Universidade Federal do Espírito Santo.