Em linguagem c. Como assim?

Eu não entendi um trem que eu li:"em scanf não é necessário o & pq em C as strings são consideradas vetores (arrays) de caracteres." Eu suspeito que não entendi pq não sei o que são vetores e as regras. Alguém me explica ai mais ou menos?

Valeu!

Comments

  • Você ainda não estudou vetores? São, de forma básica, um modo de guardar vários valores em uma única variável. Vamos supor que você queira guardar 100 números inteiros, não convém criar 100 variáveis, não é mesmo? Para solucionar esse problema, se declara um "int vet[100];".

    Esse é o básico dos vetores.

    Bem, como você deve saber, o "&" é o endereço de memória.

    Vamos supor que você queira que o usuário digite um valor inteiro e você quer gravar isso em uma variável x:

    scanf ("%d", &x);

    certo?

    Se você fizer "scanf ("%d", x)" vai dar ERRO DE COMPILAÇÃO. Porque o "&" é o espaço de memória no computação onde o valor será gravado.

    Até aí tudo bem.

    Agora supomos que você queira que o usuário digite um NOME.

    Em algumas linguagens, existe o tipo string. Mas, em linguagem C, você faz um vetor de char. Cada letra vai estar em uma posição do vetor.

    Então vamos declarar essa variável:

    char nome[50];

    "nome" é um vetor de 50 elementos do tipo caractere. Só que tem um detalhe: "nome" já É o endereço.

    Agora, você quer que o usuário digite o nome, é feito assim:

    scanf (" %[^\n]", nome);

    Nota como não existe o "&" dessa vez?

    No geral, a frase que você entendeu só queria dizer para não usar o "&" nesses casos.

    Você está fazendo algum curso ou só estudando linguagem C por conta própria?

    Basicamente tudo isso foi o que eu vi em um semestre inteiro de Prog I, não dá para entrar em todos os detalhes em uma única resposta aqui; mas você provavelmente vai ver isso melhor mais para frente caso esteja tendo aulas.

  • Se você ainda não estudou vetores então não dá para entender mesmo.

    Se quiser se adiantar nos estudos veja:

    http://www.ead.cpdee.ufmg.br/cursos/C/c.html

    aulas:

    Aula 5 - Matrizes e Strings

    Aula 7 -Funções

    e

    Aula 9 - Entradas e Saídas Padronizadas

    Adiantando: o problema é a passagem de parâmetros por valor e por referência. No caso da scanf você precisa passar por referência, ou seja: o endereço da variável que irá receber o valor lido. Mas no caso de uma string o nome da string é o endereço da primeira posição da string.

Sign In or Register to comment.