Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

drigo

[Resolvido] Qual a diferença entre char *letrasalfa e char letras

Recommended Posts

Olaaa...

 

 

Conforme o código abaixo, existe uma variável chamada char *letrasalfa na função int main() logo após é chamado o método void letrasalfabeto (char *var), mas a minha dúvida é que a variável letrasalfa está declarada como Ponteiro e o método void letrasalfabeto (char *var) recebe por parametro a mesma como ponteiro, mas qual a diferença se eu declarasse a variável letrasalfa da seguinte forma:char letrasalfa e a função dessa forma void letrasalfabeto (char var), se mesmo implementando das duas formas distintas eu consigo imprimir o valor da variável ???

 


#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void letrasalfabeto (char *var) {
   
   char alfabeto[30];
   
   strcpy (alfabeto, var);
   
   printf("%s",alfabeto);
   
   system("pause");

}

int main () {

  char *letrasalfa = "ABCDEFGHIGLMNOPRSTUVXZ";
  letrasalfabeto (letrasalfa);
  
}

Desde já, Agradeço...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você declarar como 'char', só guardará um char lá.

Para guardar alguns chars (uma string) é preciso declarar como ponteiro. (char *)

 

E, vale lembrar que, se você chamar a função letrasalfabeto(a), tal que strlen(a) > 30, vai dar segmentation fault.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olaaa...

 

 

Conforme o código abaixo, existe uma variável chamada char *letrasalfa na função int main() logo após é chamado o método void letrasalfabeto (char *var), mas a minha dúvida é que a variável letrasalfa está declarada como Ponteiro e o método void letrasalfabeto (char *var) recebe por parametro a mesma como ponteiro, mas qual a diferença se eu declarasse a variável letrasalfa da seguinte forma:char letrasalfa e a função dessa forma void letrasalfabeto (char var), se mesmo implementando das duas formas distintas eu consigo imprimir o valor da variável ???

 


#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void letrasalfabeto (char *var) {
   
   char alfabeto[30];
   
   strcpy (alfabeto, var);
   
   printf("%s",alfabeto);
   
   system("pause");

}

int main () {

  char *letrasalfa = "ABCDEFGHIGLMNOPRSTUVXZ";
  letrasalfabeto (letrasalfa);
  
}

Desde já, Agradeço...

 

 

A diferença de trabalhar com ponteiros é que ponteiros guardam endereço de memória.

É o asterisco (*) faz o compilador saber que aquela variável não vai guardar um valor mas sim um endereço para aquele tipo especificado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala aee amigão,

 

Um bizu maneiro para você entender isso perfeitamente é você estudar sobre como você ja disse "ponteiros"..

Eu tenho um link aqui legal sobre ponteiros: http://pt.wikibooks.org/wiki/Programar_em_C/Ponteiros

 

Só para reforçar o q nossos amigos falaram aê em baixo, vou ser um detalhista.

1º: quando você faz isso aqui : "char variavel". você está reservando espaço na memória do computador para ser armazenado ali o equivalente a 8 bits, ou seja você consegue escrever apenas um caracter ali, "a" ou "b" ou "c".

 

2º: Quando você faz isso aqui : "char *variavel". você está criando um "apontador" , imagine mesmo uma seta, que vai apontar para memória, ou seja, você tem apenas a seta e não tem a memória ainda reservada saca [;)]?? Então quando você faz isso aqui (variavel = "abcd" ) o compilador entende que ele tem q escrever aquele conteúdo que está entre aspas em memória e retornar o endereço de memória para aquela variável.

 

A grosso modo é mais ou menos assim que funciona, para você tirar melhor a dúvida, dá uma lida nesse link que eu te passei.

 

Um grande abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olaaa...

 

 

Obrigado pelas as respostas, consegui entender perfeitamente ...

 

 

Obrigado pela atençãoo...

 

 

Abraço a todos...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.