Enviado em 01/01/2015 - 14:53h
Ola pessoal..int main(){ char xxx[]="daniel"; int i = 0; char *ptnome; ptnome=&xxx; printf("ENDENTENDO O BASICO SOBRE PONTEIROS\n"); printf("\n\n.:[ STRINGS ]:.\n"); printf("\nConteudo de 'xxx' (%%s, xxx): %s\n",xxx); printf("Endereco de 'xxx' (%%p, &xxx): %p\n",&xxx); ptnome=&xxx; printf("Endereço de 'ptnome' (%%p, &ptnome): %p\n",&ptnome); printf("Conteudo de 'ptnome (%%s, ptnome)': %s\n",ptnome); printf("Endereço que 'ptnome' aponta (%%p, ptnome): %p\n\n",ptnome); int zzz=10; int *ptzzz; printf("\n.:[ INTEIROS ]:.\n"); printf("\nConteudo de 'zzz' (%%d, zzz): %d\n",zzz); printf("Endereco de 'zzz' (%%p, &zzz): %p\n",&zzz); ptzzz=&zzz; printf("Endereço de 'ptzzz' (%%p, &ptzzz): %p\n",&ptzzz); printf("Conteudo de 'ptzzz' (%%d, *ptzzz): %d\n",*ptzzz); printf("Endereço que 'ptzzz' aponta (%%p, ptzzz): %p\n",ptzzz); printf("\n--------------------------------\n"); printf("Primeiro elemento de 'xxx': %c\n",xxx[0]); printf("Endereco do 1 elemento: %p\n",&xxx[0]); printf("Endereco do vetor: %p\n",&xxx); printf("\nImprimindo elementos da string com ponteiros: \n"); for (i=0;i<strlen(xxx);i++) { printf("%c : %p\n",*ptnome++,&ptnome[i]); } char nome2[6]={'d','a','n','i','e','l'}; char *ptnome2; ptnome2=&nome2; i = 0; printf("\nImprimindo elementos do vetor de char com ponteiros: \n"); for (i=0;i<strlen(xxx);i++) { printf("%c : %p\n",*ptnome2++,&ptnome2[i]); } printf("\nTamanho de um char: %d\n",sizeof(char)); return 0; }
Enviado em 01/01/2015 - 22:17h
int main(){ char xxx[]="daniel"; int i = 0; char *ptnome; ptnome=&xxx; printf("ENDENTENDO O BASICO SOBRE PONTEIROS\n"); printf("\n\n.:[ STRINGS ]:.\n"); printf("\nConteudo de 'xxx' (%%s, xxx): %s\n",xxx); printf("Endereco de 'xxx' (%%p, &xxx): %p\n",&xxx); ptnome=&xxx; printf("Endereço de 'ptnome' (%%p, &ptnome): %p\n",&ptnome); printf("Conteudo de 'ptnome (%%s, ptnome)': %s\n",ptnome); printf("Endereço que 'ptnome' aponta (%%p, ptnome): %p\n\n",ptnome); int zzz=10; int *ptzzz; printf("\n.:[ INTEIROS ]:.\n"); printf("\nConteudo de 'zzz' (%%d, zzz): %d\n",zzz); printf("Endereco de 'zzz' (%%p, &zzz): %p\n",&zzz); ptzzz=&zzz; printf("Endereço de 'ptzzz' (%%p, &ptzzz): %p\n",&ptzzz); printf("Conteudo de 'ptzzz' (%%d, *ptzzz): %d\n",*ptzzz); printf("Endereço que 'ptzzz' aponta (%%p, ptzzz): %p\n",ptzzz); printf("\n--------------------------------\n"); printf("Primeiro elemento de 'xxx': %c\n",xxx[0]); printf("Endereco do 1 elemento: %p\n",&xxx[0]); printf("Endereco do vetor: %p\n",&xxx); printf("\nImprimindo elementos da string com ponteiros: \n"); for (i=0;i<strlen(xxx);i++) { printf("%c : %p : %d\n",ptnome[i],&ptnome[i],sizeof(ptnome[i])); } char nome2[6]={'d','a','n','i','e','l'}; char *ptnome2; ptnome2=&nome2; i = 0; printf("\nImprimindo elementos do vetor de char com ponteiros: \n"); for (i=0;i<strlen(xxx);i++) { printf("%c : %p : %d\n",ptnome2[i],&ptnome2[i],sizeof(ptnome2[i])); } return 0; }
ENDENTENDO O BASICO SOBRE PONTEIROS .:[ STRINGS ]:. Conteudo de 'xxx' (%s, xxx): daniel Endereco de 'xxx' (%p, &xxx): 0x7fff5c72fc15 Endereço de 'ptnome' (%p, &ptnome): 0x7fff5c72fc08 Conteudo de 'ptnome (%s, ptnome)': daniel Endereço que 'ptnome' aponta (%p, ptnome): 0x7fff5c72fc15 .:[ INTEIROS ]:. Conteudo de 'zzz' (%d, zzz): 10 Endereco de 'zzz' (%p, &zzz): 0x7fff5c72fc04 Endereço de 'ptzzz' (%p, &ptzzz): 0x7fff5c72fbf8 Conteudo de 'ptzzz' (%d, *ptzzz): 10 Endereço que 'ptzzz' aponta (%p, ptzzz): 0x7fff5c72fc04 -------------------------------- Primeiro elemento de 'xxx': d Endereco do 1 elemento: 0x7fff5c72fc15 Endereco do vetor: 0x7fff5c72fc15 Imprimindo elementos da string com ponteiros: d : 0x7fff5c72fc15 : 1 a : 0x7fff5c72fc16 : 1 n : 0x7fff5c72fc17 : 1 i : 0x7fff5c72fc18 : 1 e : 0x7fff5c72fc19 : 1 l : 0x7fff5c72fc1a : 1 Imprimindo elementos do vetor de char com ponteiros: d : 0x7fff5c72fbf2 : 1 a : 0x7fff5c72fbf3 : 1 n : 0x7fff5c72fbf4 : 1 i : 0x7fff5c72fbf5 : 1 e : 0x7fff5c72fbf6 : 1 l : 0x7fff5c72fbf7 : 1
Enviado em 01/01/2015 - 20:06h
Feliz ano novo!#include <stdio.h> int main ( void ) { char *s, c; printf ( "Ponteiro char: %d\n", sizeof(s)); printf ( "Tipo char: %d\n", sizeof(c)); return 0; }
Memoria e seu endereço: [ 0x0000000000000000 ][ 0x0000000000000001 ][ 0x0000000000000002 ][ 0x0000000000000003 ] Um ponteiro precisa apontar para uma unidade de memória. Então imagine um ponteiro que está no primeiro endereço de memória (0x0000000000000000) e aponta para o segundo elemento (0x0000000000000001). O segundo endereço de memória tem um char, assim: O CONTEÚDO da memória vai ficar assim: End: [ 0x0000000000000000 ][ 0x0000000000000001 ][ 0x0000000000000002 ][ 0x0000000000000003 ] Val: [ 0x0000000000000001 ][ 'c' ][ ------lixo------ ][ ------lixo------ ] Essa representação de memória acima poderia ser conseguida por um programa assim: char *p; char c; p = &c; printf("%p", &p ); // irá imprimir 0x0000000000000000 printf("%p", p ); // ira imprimir 0x0000000000000001 printf("%p", &c); // ira imprimir 0x0000000000000001
Enviado em 01/01/2015 - 20:26h
#include <stdio.h> int main ( void ) { char *s, c; printf ( "Ponteiro char: %d\n", sizeof(s)); printf ( "Tipo char: %d\n", sizeof(c)); return 0; }
Memoria e seu endereço: [ 0x0000000000000000 ][ 0x0000000000000001 ][ 0x0000000000000002 ][ 0x0000000000000003 ] Um ponteiro precisa apontar para uma unidade de memória. Então imagine um ponteiro que está no primeiro endereço de memória (0x0000000000000000) e aponta para o segundo elemento (0x0000000000000001). O segundo endereço de memória tem um char, assim: O CONTEÚDO da memória vai ficar assim: End: [ 0x0000000000000000 ][ 0x0000000000000001 ][ 0x0000000000000002 ][ 0x0000000000000003 ] Val: [ 0x0000000000000001 ][ 'c' ][ ------lixo------ ][ ------lixo------ ] Essa representação de memória acima poderia ser conseguida por um programa assim: char *p; char c; p = &c; printf("%p", &p ); // irá imprimir 0x0000000000000000 printf("%p", p ); // ira imprimir 0x0000000000000001 printf("%p", &c); // ira imprimir 0x0000000000000001
Enviado em 01/01/2015 - 21:55h
Opa,for (i=0;i<strlen(xxx);i++) { printf("%c : %p\n",*ptnome++,&ptnome[i]); }
for (i=0;i<strlen(xxx);i++) { printf("%c : %p\n",ptnome[i],&ptnome[i]); }
Enviado em 01/01/2015 - 22:05h
for (i=0;i<strlen(xxx);i++) { printf("%c : %p\n",*ptnome++,&ptnome[i]); }
for (i=0;i<strlen(xxx);i++) { printf("%c : %p\n",ptnome[i],&ptnome[i]); }
int main(){ char xxx[]="daniel"; int i = 0; char *ptnome; ptnome=&xxx; printf("ENDENTENDO O BASICO SOBRE PONTEIROS\n"); printf("\n\n.:[ STRINGS ]:.\n"); printf("\nConteudo de 'xxx' (%%s, xxx): %s\n",xxx); printf("Endereco de 'xxx' (%%p, &xxx): %p\n",&xxx); ptnome=&xxx; printf("Endereço de 'ptnome' (%%p, &ptnome): %p\n",&ptnome); printf("Conteudo de 'ptnome (%%s, ptnome)': %s\n",ptnome); printf("Endereço que 'ptnome' aponta (%%p, ptnome): %p\n\n",ptnome); int zzz=10; int *ptzzz; printf("\n.:[ INTEIROS ]:.\n"); printf("\nConteudo de 'zzz' (%%d, zzz): %d\n",zzz); printf("Endereco de 'zzz' (%%p, &zzz): %p\n",&zzz); ptzzz=&zzz; printf("Endereço de 'ptzzz' (%%p, &ptzzz): %p\n",&ptzzz); printf("Conteudo de 'ptzzz' (%%d, *ptzzz): %d\n",*ptzzz); printf("Endereço que 'ptzzz' aponta (%%p, ptzzz): %p\n",ptzzz); printf("\n--------------------------------\n"); printf("Primeiro elemento de 'xxx': %c\n",xxx[0]); printf("Endereco do 1 elemento: %p\n",&xxx[0]); printf("Endereco do vetor: %p\n",&xxx); printf("\nImprimindo elementos da string com ponteiros: \n"); for (i=0;i<strlen(xxx);i++) { printf("%c : %p : %d\n",*ptnome++,&ptnome[i],sizeof(ptnome[i])); } char nome2[6]={'d','a','n','i','e','l'}; char *ptnome2; ptnome2=&nome2; i = 0; printf("\nImprimindo elementos do vetor de char com ponteiros: \n"); for (i=0;i<strlen(xxx);i++) { printf("%c : %p : %d\n",*ptnome2++,&ptnome2[i],sizeof(ptnome2[i])); } return 0; }
Enviado em 01/01/2015 - 22:37h
Enviado em 01/01/2015 - 22:48h
int main(){ char xxx[]="daniel"; int i = 0; char *ptnome; ptnome=&xxx; printf("ENDENTENDO O BASICO SOBRE PONTEIROS\n"); printf("\n\n.:[ STRINGS ]:.\n"); printf("\nConteudo de 'xxx' (%%s, xxx): %s\n",xxx); printf("Endereco de 'xxx' (%%p, &xxx): %p\n",&xxx); ptnome=&xxx; printf("Endereço de 'ptnome' (%%p, &ptnome): %p\n",&ptnome); printf("Conteudo de 'ptnome (%%s, ptnome)': %s\n",ptnome); printf("Endereço que 'ptnome' aponta (%%p, ptnome): %p\n\n",ptnome); int zzz=10; int *ptzzz; printf("\n.:[ INTEIROS ]:.\n"); printf("\nConteudo de 'zzz' (%%d, zzz): %d\n",zzz); printf("Endereco de 'zzz' (%%p, &zzz): %p\n",&zzz); ptzzz=&zzz; printf("Endereço de 'ptzzz' (%%p, &ptzzz): %p\n",&ptzzz); printf("Conteudo de 'ptzzz' (%%d, *ptzzz): %d\n",*ptzzz); printf("Endereço que 'ptzzz' aponta (%%p, ptzzz): %p\n",ptzzz); printf("\n--------------------------------\n"); printf("Primeiro elemento de 'xxx': %c\n",xxx[0]); printf("Endereco do 1 elemento: %p\n",&xxx[0]); printf("Endereco do vetor: %p\n",&xxx); printf("\nImprimindo elementos da string com ponteiros: \n"); for (i=0;i<strlen(xxx);i++) { printf("%c : %p : %d\n",ptnome[i],&ptnome[i],sizeof(ptnome[i])); } char nome2[6]={'d','a','n','i','e','l'}; char *ptnome2; ptnome2=&nome2; i = 0; printf("\nImprimindo elementos do vetor de char com ponteiros: \n"); for (i=0;i<strlen(xxx);i++) { printf("%c : %p : %d\n",ptnome2[i],&ptnome2[i],sizeof(ptnome2[i])); } return 0; }
ENDENTENDO O BASICO SOBRE PONTEIROS .:[ STRINGS ]:. Conteudo de 'xxx' (%s, xxx): daniel Endereco de 'xxx' (%p, &xxx): 0x7fff5c72fc15 Endereço de 'ptnome' (%p, &ptnome): 0x7fff5c72fc08 Conteudo de 'ptnome (%s, ptnome)': daniel Endereço que 'ptnome' aponta (%p, ptnome): 0x7fff5c72fc15 .:[ INTEIROS ]:. Conteudo de 'zzz' (%d, zzz): 10 Endereco de 'zzz' (%p, &zzz): 0x7fff5c72fc04 Endereço de 'ptzzz' (%p, &ptzzz): 0x7fff5c72fbf8 Conteudo de 'ptzzz' (%d, *ptzzz): 10 Endereço que 'ptzzz' aponta (%p, ptzzz): 0x7fff5c72fc04 -------------------------------- Primeiro elemento de 'xxx': d Endereco do 1 elemento: 0x7fff5c72fc15 Endereco do vetor: 0x7fff5c72fc15 Imprimindo elementos da string com ponteiros: d : 0x7fff5c72fc15 : 1 a : 0x7fff5c72fc16 : 1 n : 0x7fff5c72fc17 : 1 i : 0x7fff5c72fc18 : 1 e : 0x7fff5c72fc19 : 1 l : 0x7fff5c72fc1a : 1 Imprimindo elementos do vetor de char com ponteiros: d : 0x7fff5c72fbf2 : 1 a : 0x7fff5c72fbf3 : 1 n : 0x7fff5c72fbf4 : 1 i : 0x7fff5c72fbf5 : 1 e : 0x7fff5c72fbf6 : 1 l : 0x7fff5c72fbf7 : 1
Primeiro elemento de 'xxx': d Endereco do 1 elemento: 0x7fff98e3d120 Endereco do vetor: 0x7fff98e3d120 Imprimindo elementos da string com ponteiros: d : 0x7fff98e3d120 : 1 a : 0x7fff98e3d122 : 1 n : 0x7fff98e3d124 : 1 i : 0x7fff98e3d126 : 1 e : 0x7fff98e3d128 : 1 l : 0x7fff98e3d12a : 1 Imprimindo elementos do vetor de char com ponteiros: d : 0x7fff98e3d100 : 1 a : 0x7fff98e3d102 : 1 n : 0x7fff98e3d104 : 1 i : 0x7fff98e3d106 : 1 e : 0x7fff98e3d108 : 1 l : 0x7fff98e3d10a : 1
Enviado em 01/01/2015 - 22:57h
int main(){ char xxx[]="daniel"; int i = 0; char *ptnome; ptnome=&xxx; printf("ENDENTENDO O BASICO SOBRE PONTEIROS\n"); printf("\n\n.:[ STRINGS ]:.\n"); printf("\nConteudo de 'xxx' (%%s, xxx): %s\n",xxx); printf("Endereco de 'xxx' (%%p, &xxx): %p\n",&xxx); ptnome=&xxx; printf("Endereço de 'ptnome' (%%p, &ptnome): %p\n",&ptnome); printf("Conteudo de 'ptnome (%%s, ptnome)': %s\n",ptnome); printf("Endereço que 'ptnome' aponta (%%p, ptnome): %p\n\n",ptnome); int zzz=10; int *ptzzz; printf("\n.:[ INTEIROS ]:.\n"); printf("\nConteudo de 'zzz' (%%d, zzz): %d\n",zzz); printf("Endereco de 'zzz' (%%p, &zzz): %p\n",&zzz); ptzzz=&zzz; printf("Endereço de 'ptzzz' (%%p, &ptzzz): %p\n",&ptzzz); printf("Conteudo de 'ptzzz' (%%d, *ptzzz): %d\n",*ptzzz); printf("Endereço que 'ptzzz' aponta (%%p, ptzzz): %p\n",ptzzz); printf("\n--------------------------------\n"); printf("Primeiro elemento de 'xxx': %c\n",xxx[0]); printf("Endereco do 1 elemento: %p\n",&xxx[0]); printf("Endereco do vetor: %p\n",&xxx); printf("\nImprimindo elementos da string com ponteiros: \n"); for (i=0;i<strlen(xxx);i++) { printf("%c : %p : %d\n",ptnome[i],&ptnome[i],sizeof(ptnome[i])); } char nome2[6]={'d','a','n','i','e','l'}; char *ptnome2; ptnome2=&nome2; i = 0; printf("\nImprimindo elementos do vetor de char com ponteiros: \n"); for (i=0;i<strlen(xxx);i++) { printf("%c : %p : %d\n",ptnome2[i],&ptnome2[i],sizeof(ptnome2[i])); } return 0; }
printf("%c : %p : %d\n",ptnome[i],&ptnome[i],sizeof(ptnome[i]));
Enviado em 01/01/2015 - 23:17h
Opa.for (i=0;i<strlen(xxx);i++) { printf("%c : %p\n",*ptnome++,&ptnome[ i ]); } ... Vamos por iteração: (considere também que ptnome tem endereço inicial 0x01.) i = 0 imprime *ptnome que esta no endereço 0x01 e logo após incrementa o endereço (que passa a ser 0x02 depois da impressão) imprime endereço de ptnome[ i ], ou seja ( 0x02 + 0 ) = 0x02. i = 1 imprime *ptnome que esta no endereço 0x02 e logo após incrementa o endereço (que passa a ser 0x03 depois da impressao) imprime endereço de ptnome[ i ], ou seja (0x03 + 1) = 0x04 i = 2 imprime *ptnome que esta no endereço 0x03 e logo após incrementa o endereço (que passa a ser 0x04 depois da impressão ) imprime endereço de ptnome[ i ], ou seja ( 0x04 + 2) = 0x06 i = 3 imprime *ptnome que esta no endereço 0x04 e logo apos incrementa o endereço ( que passa a ser 0x05 depois da impressão ) imprime endereço de ptnome[ i ], ou seja ( 0x05 + 3 ) = 0x08 i = n...
Enviado em 01/01/2015 - 23:20h
for (i=0;i<strlen(xxx);i++) { printf("%c : %p\n",*ptnome++,&ptnome[ i ]); } ... Vamos por iteração: (considere também que ptnome tem endereço inicial 0x01.) i = 0 imprime *ptnome que esta no endereço 0x01 e logo após incrementa o endereço (que passa a ser 0x02 depois da impressão) imprime endereço de ptnome[ i ], ou seja ( 0x02 + 0 ) = 0x02. i = 1 imprime *ptnome que esta no endereço 0x02 e logo após incrementa o endereço (que passa a ser 0x03 depois da impressao) imprime endereço de ptnome[ i ], ou seja (0x03 + 1) = 0x04 i = 2 imprime *ptnome que esta no endereço 0x03 e logo após incrementa o endereço (que passa a ser 0x04 depois da impressão ) imprime endereço de ptnome[ i ], ou seja ( 0x04 + 2) = 0x06 i = 3 imprime *ptnome que esta no endereço 0x04 e logo apos incrementa o endereço ( que passa a ser 0x05 depois da impressão ) imprime endereço de ptnome[ i ], ou seja ( 0x05 + 3 ) = 0x08 i = n...
Enviado em 02/01/2015 - 00:11h
char arr1[]="daniel"; char arr2[]={'d', 'a', 'n', 'i', 'e', 'l'}; char arr3[]={100, 97, 110, 105, 101, 108}; char arr4[]={'d', 'a', 'n', 'i', 'e', 'l', 0}; char arr3[]={100, 97, 110, 105, 101, 108, 0}; /* (sizeof arr1)==7, arr1 pode ser usado como string. */ /* (sizeof arr2)==6, arr2 não deve ser usado como string. */ /* (sizeof arr3)==6, arr3 não deve ser usado como string. */ /* Os conteúdos de arr2 e arr3 são idênticos. */ /* (sizeof arr4)==7, arr4 pode ser usado como string. */ /* (sizeof arr5)==7, arr5 pode ser usado como string. */ /* Os conteúdos de arr1, arr4 e arr5 são idênticos, mas existe uma diferença entre eles: o conteúdo de arr1 é constante, mesmo tendo sido declarado sem a palavra-chave const (em C; se fosse C++, a especificação de const na delcaração de arr1 seria obrigatória). */
char xxx[]="daniel"; int i = 0; char *ptnome; ptnome=&xxx;
void func(char param[10]){ char arr[10]="Um string"; /* 9 caracteres + terminador. */ char *p1, *p2, *p3, *p4; p1=arr; /* OK: ponteiro para char recebe endereço de char (primeiro elemento do bloco indicado por “arr”). */ p2=&arr; /* Problema: não faz sentido usar & em constante, mas o compilador permite. No entanto isso causa um erro de tipo de dados. */ p3=param; /* OK: ponteiro para char recebe endereço de char. */ p4=¶m; /* Erro de tipo (apesar da forma de array usada na de- claração, o tipo de param é char *). */ char (*pac1)[10], (*pac2)[10]; pac1=&arr; /* Problema: não faz sentido usar & em constante, mas aqui não existe mais o erro de tipo. */ pac2=¶m; /* Erro de tipo (ver abaixo). */ char **ppc1, **ppc2; ppc1=&arr; /* Problema: não faz sentido usar & em constante, e ainda existe uma incompatibilidade de tipos. */ ppc2=¶m; /* OK: param tem seu próprio endereço e é um char *, então ¶m é compatível com char **. */ printf("p1=%p\n", p1); printf("p2=%p\n", p2); printf("p3=%p\n", p3); printf("p4=%p\n\n", p4); printf("pac1=%p\n", pac1); printf("pac2=%p\n\n", pac2); printf("ppc1=%p\n", ppc1); printf("ppc2=%p\n", ppc2); }
char *dyn_array; dyn_array=calloc(10, 1); /* (sizeof char)==1 por definição */ func(dyn_array); /* Chamo a função com um array dinâmico com exatamente 10 elementos. Por quê não? */
void func(*param)
int arr_int[15];
p1=0x7fffdc074900 p2=0x7fffdc074900 p3=0x4007b6 p4=0x7fffdc0748b8 pac1=0x7fffdc074900 pac2=0x7fffdc0748b8 ppc1=0x7fffdc074900 ppc2=0x7fffdc0748b8
$ gcc -Wall -Werror -o lixo lixo.c -std=c11 lixo.c: In function ‘func’: lixo.c:10:5: error: assignment from incompatible pointer type [-Werror] p2=&arr; /* Problema: não faz sentido usar & em constante, ^ lixo.c:15:5: error: assignment from incompatible pointer type [-Werror] p4=¶m; /* Erro de tipo. */ ^ lixo.c:20:7: error: assignment from incompatible pointer type [-Werror] pac2=¶m; /* OK: obtém o endereço onde a função guarda o ^ lixo.c:24:7: error: assignment from incompatible pointer type [-Werror] ppc1=&arr; /* Problema: não faz sentido usar & em constante, ^ cc1: all warnings being treated as errors
printf("ENDENTENDO O BASICO SOBRE PONTEIROS\n"); printf("\n\n.:[ STRINGS ]:.\n"); printf("\nConteudo de 'xxx' (%%s, xxx): %s\n",xxx); printf("Endereco de 'xxx' (%%p, &xxx): %p\n",&xxx); ptnome=&xxx; printf("Endereço de 'ptnome' (%%p, &ptnome): %p\n",&ptnome); printf("Conteudo de 'ptnome (%%s, ptnome)': %s\n",ptnome); printf("Endereço que 'ptnome' aponta (%%p, ptnome): %p\n\n",ptnome); int zzz=10; int *ptzzz; printf("\n.:[ INTEIROS ]:.\n"); printf("\nConteudo de 'zzz' (%%d, zzz): %d\n",zzz); printf("Endereco de 'zzz' (%%p, &zzz): %p\n",&zzz); ptzzz=&zzz; printf("Endereço de 'ptzzz' (%%p, &ptzzz): %p\n",&ptzzz); printf("Conteudo de 'ptzzz' (%%d, *ptzzz): %d\n",*ptzzz); printf("Endereço que 'ptzzz' aponta (%%p, ptzzz): %p\n",ptzzz); printf("\n--------------------------------\n"); printf("Primeiro elemento de 'xxx': %c\n",xxx[0]); printf("Endereco do 1 elemento: %p\n",&xxx[0]); printf("Endereco do vetor: %p\n",&xxx); printf("\nImprimindo elementos da string com ponteiros: \n"); for (i=0;i<strlen(xxx);i++) { printf("%c : %p\n",*ptnome++,&ptnome); } char nome2[6]={'d','a','n','i','e','l'}; char *ptnome2; ptnome2=&nome2; i = 0; printf("\nImprimindo elementos do vetor de char com ponteiros: \n"); for (i=0;i<strlen(xxx);i++) { printf("%c : %p\n",*ptnome2++,&ptnome2[i]);
} printf("\nTamanho de um char: %d\n",sizeof(char)); return 0; }
Criar entrada (menuentry) ISO no Grub
Como gerar qualquer emoji ou símbolo unicode a partir do seu teclado
Instalando o Pi-Hole versão v5.18.4 depois do lançamento da versão v6.0
Instalar o VIM 9.1 no Debian 12
Como saber o range de um IP público?
Muitas dificuldades ao instalar distro Linux em Notebook Sony Vaio PCG-6131L (VPCEA24FM)