const char *? [RESOLVIDO]

1. const char *? [RESOLVIDO]

Gabriel Oliveira da Silva
Gabrielz

(usa Arch Linux)

Enviado em 13/12/2015 - 14:28h

Sempre quando dou uma olhada nos headers oficiais do C, encontro funções que recebem os argumentos "const char *". Ok, até aí tudo bem, é um ponteiro que aponta para uma variável do tipo const char. Maaaaas... dá para colocar strings! Isso realmente me confunde. const char * funciona como string?

Me expliquem isso!


  


2. MELHOR RESPOSTA

Thiago Henrique Hüpner
Thihup

(usa Manjaro Linux)

Enviado em 13/12/2015 - 20:44h

Olá!

Strings são imutáveis. Em C não existe "strings" propriamente dita, só vetores de caracteres. As pessoas que usam C costumam utilizar o termo "string" se referendo ao vetores de caracteres.

String pode ser traduzida como "corda/linha", mas para mim seria algo como "frase" [NOTA: Posso estar errado da tradução! Caso alguém saiba certinho o que signifique, corrija-me!] . O tipo de dado "string" só foi implementado mesmo no C++.

Ou seja, em C, o const char *string poderia ter sido escrito como const char *suvaco.

[Vetores apontam para o primeiro endereço de memória alocado, ou seja, se você fizer a declaração como const char *x ou const char x[] terão o mesmo efeito]

[Se quiser me adicionar no skype, me add: taelandes]

Espero ter ajudado

[]'s

T+

--

Att,

Thiago Henrique Hüpner

(Mensagem scaneada pelo antivírus........ops! não precisa, afinal eu uso Linux!)


3. Re: const char *? [RESOLVIDO]

Thiago Henrique Hüpner
Thihup

(usa Manjaro Linux)

Enviado em 13/12/2015 - 14:39h

Olá!

Amigo, const é algo fixo, como um #define.

Quando passamos um array de caracteres que não deve ser modificado, utilizamos o const char *. Geralmente é utilizado para ser feito apenas um cópia do array e fazer o uso da cópia na função.

Exemplo:


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

int imprimeTamanho(const char *fraseImutavel){
return strlen(fraseImutavel);
}

int main(int argc, char *argv[]){

char *x = "Frase Mitica!";

printf("A frase \"%s\" possui %d letras!\n",x, imprimeTamanho(x));

return 0;
}



Espero ter ajudado

[]'s

T+

--

Att,

Thiago Henrique Hüpner

(Mensagem scaneada pelo antivírus........ops! não precisa, afinal eu uso Linux!)



4. Re: const char *? [RESOLVIDO]

Gabriel Oliveira da Silva
Gabrielz

(usa Arch Linux)

Enviado em 13/12/2015 - 15:36h

Thihup escreveu:

Olá!

Amigo, const é algo fixo, como um #define.

Quando passamos um array de caracteres que não deve ser modificado, utilizamos o const char *. Geralmente é utilizado para ser feito apenas um cópia do array e fazer o uso da cópia na função.

Exemplo:


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

int imprimeTamanho(const char *fraseImutavel){
return strlen(fraseImutavel);
}

int main(int argc, char *argv[]){

char *x = "Frase Mitica!";

printf("A frase \"%s\" possui %d letras!\n",x, imprimeTamanho(x));

return 0;
}



Espero ter ajudado

[]'s

T+

--

Att,

Thiago Henrique Hüpner

(Mensagem scaneada pelo antivírus........ops! não precisa, afinal eu uso Linux!)


Eu sei que const é isso!! Não sou leigo em lógica de programação.
Eu só quero saber porque usam const char * como se fosse uma string.
Por exemplo, creio que a função strlen é assim:
size_t strlen(const char *string);
Por que usou o const char * se estou passando uma string e não um endereço de memória de um const char?


5. Re: const char *? [RESOLVIDO]

Gabriel Oliveira da Silva
Gabrielz

(usa Arch Linux)

Enviado em 13/12/2015 - 21:55h

Thihup escreveu:

Olá!

Strings são imutáveis. Em C não existe "strings" propriamente dita, só vetores de caracteres. As pessoas que usam C costumam utilizar o termo "string" se referendo ao vetores de caracteres.

String pode ser traduzida como "corda/linha", mas para mim seria algo como "frase" [NOTA: Posso estar errado da tradução! Caso alguém saiba certinho o que signifique, corrija-me!] . O tipo de dado "string" só foi implementado mesmo no C++.

Ou seja, em C, o const char *string poderia ter sido escrito como const char *suvaco.

[Vetores apontam para o primeiro endereço de memória alocado, ou seja, se você fizer a declaração como const char *x ou const char x[] terão o mesmo efeito]

[Se quiser me adicionar no skype, me add: taelandes]

Espero ter ajudado

[]'s

T+

--

Att,

Thiago Henrique Hüpner

(Mensagem scaneada pelo antivírus........ops! não precisa, afinal eu uso Linux!)


Agora entendi!!!!
const char * é a mesma coisa de const char[]. Não tinha percebido isso. Levou melhor resposta.







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts