Olá a todos!! Galera, tenho uma dúvida conceitual, primeiro peço que leiam meu código ( é pequeno e serve apenas para explicitar minhas dúvidas):
#include <stdio.h>
int main() {
char *p1, vet[]="Coruja";
int *p2, x=6;
p1 = vet; // ou p1=&vet[0],tanto faz
printf("endereco do ponteiro p1: %x\nendereco da variavel apontada por p1: %x\ncontudo armazenado em p1: %s\n\n\n",p1, &p1, p1);
p2 = &x;
printf("endereco do ponteiro p2: %x\nendereco da variavel apontada por p2: %x\nvalor armazenado em p2:%d", p2, &p2, *p2);
return 0;
}
DÚVIDAS:
Por que quando printamos o conteúdo referente a um ponteiro do tipo char, não podemos passar o *p1 como argumento para indicar esse conteúdo? Por exemplo, quando queremos printar o conteúdo apontado por um ponteiro do tipo int, passamos o *p2 como um argumento.Caso eu o fizesse num ponteiro do tipo char, o programa não rodaria.Outra dúvida, o conteúdo armazenado peloponteiro do tipo char p1 e o conteúdo apontado por ele foram passados por mim no printf como o mesmo argumento ( ambos p1),mas um printou o endereço( passei como %x ) e o outro o conteúdo da string (passei como %s). Como pode isso?! É um conteúdo ou um endereço afinal?? Parece que quanto mais tento estudar ponteiros, mais confuso eu fico...broxante!!
Diferenças entre tratar ponteiros do tipo char de outros tipos.
em Grupo de Estudos
Postado · Editado por victor93
Olá a todos!! Galera, tenho uma dúvida conceitual, primeiro peço que leiam meu código ( é pequeno e serve apenas para explicitar minhas dúvidas):
DÚVIDAS:
Por que quando printamos o conteúdo referente a um ponteiro do tipo char, não podemos passar o *p1 como argumento para indicar esse conteúdo? Por exemplo, quando queremos printar o conteúdo apontado por um ponteiro do tipo int, passamos o *p2 como um argumento.Caso eu o fizesse num ponteiro do tipo char, o programa não rodaria.Outra dúvida, o conteúdo armazenado peloponteiro do tipo char p1 e o conteúdo apontado por ele foram passados por mim no printf como o mesmo argumento ( ambos p1),mas um printou o endereço( passei como %x ) e o outro o conteúdo da string (passei como %s). Como pode isso?! É um conteúdo ou um endereço afinal??
Parece que quanto mais tento estudar ponteiros, mais confuso eu fico...broxante!!
Desde já grato.