drigo 0 Denunciar post Postado Janeiro 14, 2010 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
VictorCacciari 42 Denunciar post Postado Janeiro 14, 2010 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
Brown. 1 Denunciar post Postado Janeiro 15, 2010 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
Carutcho 0 Denunciar post Postado Janeiro 15, 2010 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
drigo 0 Denunciar post Postado Janeiro 27, 2010 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