If you can't read please download the document
Upload
regis-magalhaes
View
10.117
Download
2
Embed Size (px)
Citation preview
2. Ponteiros
3. Declarao de Ponteiros
4. Exemplo #include intmain() { intx = 5; int*px; px = &x; printf ( "x: %d " , x); printf ( "px: %d " , *px); return0; } 5. Exemplo #include intmain() { intx = 5; int*px; px = &x; printf ( "x: %d " , x); printf ( "px: %d " , *px); x = 7; printf ( "x: %d " , x); printf ( "px: %d " , *px); *px = 3; printf ( "x: %d " , x); printf ( "px: %d " , *px); return0; } 6. Ponteiro para char #include intstrtamanho( char*str) { inttamanho = 0; while(*str) { tamanho++; str++; } returntamanho; } intmain() { charpalavra[100]; printf ( "Digite uma palavra: " ); gets (palavra); printf ( "O tamanho e: %d " , strtamanho(palavra)); return0; } 7. Ponteiro para char #include char*strupper( char*str) { char*inicio; inicio = str; while(*str) { *str = toupper(*str);str++; } returninicio; } intmain() { charpalavra[100]; printf ( "Digite uma palavra: " ); gets (palavra); printf ( "Em caixa alta: %s " , strupper(palavra)); return0; } 8. Alocao Dinmica
9. Alocao dinmica de memria
10. Alocao dinmica de memria
11. Alocao dinmica de memria
12. Liberao dinmica de memria
13. Ponteiros para estruturas #include #include #include structpessoa { char nome [50]; int idade ; }; typedef structpessoaPessoa ; intmain() { Pessoa*p = malloc( sizeof ( Pessoa )); strcpy (p-> nome , "Regis" ); p-> idade= 18; printf ( "Nome: %s - Idade: %d " , p-> nome , p-> idade ); free(p); return0; } 14. Exemplo #include #include #include structpessoa { char nome [50]; int idade ; }; typedef structpessoaPessoa ; intmain() { Pessoa*p = malloc(2 *sizeof ( Pessoa )); Pessoa*inicio = p; strcpy (p-> nome , "Regis" ); p-> idade= 18; p++; strcpy (p-> nome , "Maria" ); p-> idade= 25; p = inicio; printf ( "Nome: %s - Idade: %d " , p-> nome , p-> idade ); p++; printf ( "Nome: %s - Idade: %d " , p-> nome , p-> idade ); free(inicio); return0; } 15. Exemplo #include #include #include structpessoa { char nome [50]; int idade ; }; typedef structpessoaPessoa ; intmain() { Pessoa*p = malloc(2 *sizeof ( Pessoa )); strcpy (p[0]. nome , "Regis" ); p[0]. idade= 18; strcpy (p[1]. nome , "Maria" ); p[1]. idade= 25; printf ( "Nome: %s - Idade: %d " , p[0]. nome , p[0]. idade ); printf ( "Nome: %s - Idade: %d " , p[1]. nome , p[1]. idade ); free(p); return0; } 16. Passagem parmetros por referncia
17. Passagem parmetros por referncia #include voidtroca( int*x,int*y) { intaux = *x; *x = *y; *y = aux; } intmain() { intn1, n2; printf ( "Digite n1: " ); scanf ( "%d" , &n1); printf ( "Digite n2: " ); scanf ( "%d" , &n2); troca(&n1, &n2); printf ( "n1 eh: %d " , n1); printf ( "n2 eh: %d " , n2); return0; } 18. Lista Encadeada Simples 19. Lista Encadeada Simples 20. Lista Encadeada Simples #include #include typedef structpessoaPessoa ; structpessoa { char nome [50]; int idade ; Pessoa* proximo ; }; intmain() { Pessoa*pAtual, *pInicio = NULL, *pAnterior = NULL; charcontinua; do{ pAtual = malloc( sizeof ( Pessoa )); printf ( "Digite um nome: " ); gets (pAtual-> nome ); printf ( "Digite a idade: " ); scanf ( "%d" , &pAtual-> idade );getchar (); if(pInicio == NULL) { pInicio = pAtual; }if(pAnterior != NULL) { pAnterior-> proximo= pAtual; } pAnterior = pAtual; printf ( "Insere mais (S/N)? " ); continua =getchar ();getchar (); }while(toupper(continua) !='N' ); pAtual = pInicio; while(pAtual != NULL) { printf ( "Nome: %s - Idade: %d " , pAtual-> nome , pAtual-> idade ); pAtual = pAtual-> proximo ; } }