aula M02A04 – Operador Ternário

Home Fóruns Linguagem C aula M02A04 – Operador Ternário

Visualizando 2 respostas da discussão
  • Autor
    Posts
    • #70424
      Richarllison Vieira
      Participante

      Na aula é explicado que não seria possível atribuir string a uma variável string e é usado esse exemplo:

      #import <stdio.h>
      void main () {
      float media = 5.5;
      char sit[10];
      sit = (media>= 7)?”Aprovado”:”Reprovado”;

      Porem ao declarar a string “sit”, fiz da seguinte forma e funcionou:
      #import <stdio.h>
      void main () {
      float media = 5.5;
      char *sit = (media>= 7)?”Aprovado”:”Reprovado”;

      Gostaria de saber qual é diferença ao declarar uma string usando char *sit; ou char sit[15]; pois uma funciona normalmente e outra da erro.
      Obrigado desde já!

    • #70436
      Tutora Mayla
      Mestre

      Richarllison, a explicação para esta diferença depende de tópicos mais avançados da linguagem C, que são vetores e ponteiros.

      Ao declarar uma string como char sit[10] estamos pedindo ao computador para reservar 10 espaços de caracteres na memória, criando um vetor. Em C, não é possível fazer atribuições de valores a vetores por definição da linguagem.
      Já em char *sit estamos declarando um ponteiro, isto é, uma variável que armazena um endereço de memória. A atribuição é permitida aqui pois ela faz com que a variável sit aponte para o endereço de memória onde a string "Aprovado" ou "Reprovado" está armazenada.

      Por mais que usar char *sit permita a atribuição, como se trata de um tópico avançado que pode causar muitos erros é recomendado que use a outra forma de declarar strings.

      Espero ter ajudado, quaisquer outras dúvidas basta entrar em contato.

    • #70438
      Richarllison Vieira
      Participante

      Muito obrigado pela ajuda!

Visualizando 2 respostas da discussão
  • Você deve fazer login para responder a este tópico.