SlideShare une entreprise Scribd logo
1  sur  20
Linguagem C Ponteiros Regis Pires Magalhães [email_address]
Ponteiros ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Declaração de Ponteiros ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Exemplo #include   <stdio.h> int  main() { int  x = 5; int  *px; px = &x; printf ( &quot;x: %d&quot; , x); printf ( &quot;px: %d&quot; , *px); return  0; }
Exemplo #include   <stdio.h> int  main() { int  x = 5; int  *px; px = &x; printf ( &quot;x: %d&quot; , x); printf ( &quot;px: %d&quot; , *px); x = 7; printf ( &quot;x: %d&quot; , x); printf ( &quot;px: %d&quot; , *px); *px = 3; printf ( &quot;x: %d&quot; , x); printf ( &quot;px: %d&quot; , *px); return  0; }
Ponteiro para char #include   <stdio.h> int  strtamanho( char  *str) { int  tamanho = 0; while  (*str) { tamanho++; str++; } return  tamanho; } int  main() { char  palavra[100]; printf ( &quot;Digite uma palavra: &quot; ); gets (palavra); printf ( &quot;O tamanho e: %d&quot; , strtamanho(palavra)); return  0; }
Ponteiro para char #include   <stdio.h> char  *strupper( char  *str) { char  *inicio; inicio = str; while  (*str) { *str = toupper(*str);  str++; } return  inicio; } int  main() { char  palavra[100]; printf ( &quot;Digite uma palavra: &quot; ); gets (palavra); printf ( &quot;Em caixa alta: %s&quot; , strupper(palavra)); return  0; }
Alocação Dinâmica ,[object Object],[object Object],[object Object],[object Object],[object Object]
Alocação dinâmica de memória ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Alocação dinâmica de memória ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Alocação dinâmica de memória ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Liberação dinâmica de memória ,[object Object],[object Object]
Ponteiros para estruturas #include   <stdio.h> #include   <string.h> #include   <stdlib.h> struct  pessoa { char   nome [50]; int   idade ; }; typedef   struct  pessoa  Pessoa ; int  main() { Pessoa  *p = malloc( sizeof ( Pessoa )); strcpy (p-> nome , &quot;Regis&quot; ); p-> idade  = 18; printf ( &quot;Nome: %s - Idade: %d&quot; , p-> nome , p-> idade ); free(p); return  0; }
Exemplo #include   <stdio.h> #include   <string.h> #include   <stdlib.h> struct  pessoa { char   nome [50]; int   idade ; }; typedef   struct  pessoa  Pessoa ; int  main() { Pessoa  *p = malloc(2 *  sizeof ( Pessoa )); Pessoa  *inicio = p; strcpy (p-> nome , &quot;Regis&quot; ); p-> idade  = 18; p++; strcpy (p-> nome , &quot;Maria&quot; ); p-> idade  = 25; p = inicio; printf ( &quot;Nome: %s - Idade: %d&quot; , p-> nome , p-> idade ); p++; printf ( &quot;Nome: %s - Idade: %d&quot; , p-> nome , p-> idade ); free(inicio); return  0; }
Exemplo #include   <stdio.h> #include   <string.h> #include   <stdlib.h> struct  pessoa { char   nome [50]; int   idade ; }; typedef   struct  pessoa  Pessoa ; int  main() { Pessoa  *p = malloc(2 *  sizeof ( Pessoa )); strcpy (p[0]. nome , &quot;Regis&quot; ); p[0]. idade  = 18; strcpy (p[1]. nome , &quot;Maria&quot; ); p[1]. idade  = 25; printf ( &quot;Nome: %s - Idade: %d&quot; , p[0]. nome , p[0]. idade ); printf ( &quot;Nome: %s - Idade: %d&quot; , p[1]. nome , p[1]. idade ); free(p); return  0; }
Passagem parâmetros por referência ,[object Object]
Passagem parâmetros por referência #include   <stdio.h> void  troca( int  *x,  int  *y) { int  aux = *x; *x = *y; *y = aux; } int  main() { int  n1, n2; printf ( &quot;Digite n1: &quot; ); scanf ( &quot;%d&quot; , &n1); printf ( &quot;Digite n2: &quot; ); scanf ( &quot;%d&quot; , &n2); troca(&n1, &n2); printf ( &quot;n1 eh: %d&quot; , n1); printf ( &quot;n2 eh: %d&quot; , n2); return  0; }
Lista Encadeada Simples
Lista Encadeada Simples
Lista Encadeada Simples #include   <stdio.h> #include   <stdlib.h> typedef   struct  pessoa  Pessoa ; struct  pessoa { char   nome [50]; int   idade ; Pessoa  * proximo ; }; int  main() { Pessoa  *pAtual, *pInicio = NULL, *pAnterior = NULL; char  continua; do  { pAtual = malloc( sizeof ( Pessoa )); printf ( &quot;Digite um nome: &quot; ); gets (pAtual-> nome ); printf ( &quot;Digite a idade: &quot; ); scanf ( &quot;%d&quot; , &pAtual-> idade );  getchar (); if  (pInicio == NULL) { pInicio = pAtual; }  if  (pAnterior != NULL) { pAnterior-> proximo  = pAtual; } pAnterior = pAtual; printf ( &quot;Insere mais (S/N)? &quot; ); continua =  getchar ();  getchar (); }  while  (toupper(continua) !=  'N' ); pAtual = pInicio; while  (pAtual != NULL) { printf ( &quot;Nome: %s - Idade: %d&quot; , pAtual-> nome , pAtual-> idade ); pAtual = pAtual-> proximo ; } }

Contenu connexe

Tendances

Material de Apoio de Algoritmo e Lógica de Programação
Material de Apoio de Algoritmo e Lógica de ProgramaçãoMaterial de Apoio de Algoritmo e Lógica de Programação
Material de Apoio de Algoritmo e Lógica de Programaçãorodfernandes
 
Algoritmos e lp parte3-pseudocódigo
Algoritmos e lp parte3-pseudocódigoAlgoritmos e lp parte3-pseudocódigo
Algoritmos e lp parte3-pseudocódigoMauro Pereira
 
Algoritmos - Aula 05 A - Correcao de Exercicios
Algoritmos - Aula 05 A - Correcao de ExerciciosAlgoritmos - Aula 05 A - Correcao de Exercicios
Algoritmos - Aula 05 A - Correcao de ExerciciosRodrigo Kiyoshi Saito
 
Introdução a estruturas de dados em python
Introdução a estruturas de dados em pythonIntrodução a estruturas de dados em python
Introdução a estruturas de dados em pythonAlvaro Oliveira
 
Algoritmos de ordenação
Algoritmos de ordenaçãoAlgoritmos de ordenação
Algoritmos de ordenaçãoJonas Mendonça
 
Apresentação 20130805 algoritmos
Apresentação 20130805 algoritmos Apresentação 20130805 algoritmos
Apresentação 20130805 algoritmos João moreira
 
Estruturas em C++ (struct)
Estruturas em C++ (struct)Estruturas em C++ (struct)
Estruturas em C++ (struct)Márcio Rizzatto
 
Java: Manipulação de Arquivos
Java:  Manipulação  de ArquivosJava:  Manipulação  de Arquivos
Java: Manipulação de ArquivosArthur Emanuel
 
Pseudocódigo ou Portugol (Lógica de Programação)
Pseudocódigo ou Portugol (Lógica de Programação)Pseudocódigo ou Portugol (Lógica de Programação)
Pseudocódigo ou Portugol (Lógica de Programação)Gercélia Ramos
 
Laços de Repetição - Linguagem C
Laços de Repetição - Linguagem CLaços de Repetição - Linguagem C
Laços de Repetição - Linguagem Cprofjr
 
Pseudocódigo - Estrutura de Repetição (Lógica de Programação)
Pseudocódigo - Estrutura de Repetição (Lógica de Programação)Pseudocódigo - Estrutura de Repetição (Lógica de Programação)
Pseudocódigo - Estrutura de Repetição (Lógica de Programação)Gercélia Ramos
 
Introdução a Algoritmos: Conceitos Básicos
Introdução a Algoritmos: Conceitos BásicosIntrodução a Algoritmos: Conceitos Básicos
Introdução a Algoritmos: Conceitos BásicosElaine Cecília Gatto
 
Exercicios resolvidos visuAlg
Exercicios resolvidos visuAlgExercicios resolvidos visuAlg
Exercicios resolvidos visuAlgWillians Miyabara
 

Tendances (20)

Material de Apoio de Algoritmo e Lógica de Programação
Material de Apoio de Algoritmo e Lógica de ProgramaçãoMaterial de Apoio de Algoritmo e Lógica de Programação
Material de Apoio de Algoritmo e Lógica de Programação
 
Algoritmos e lp parte3-pseudocódigo
Algoritmos e lp parte3-pseudocódigoAlgoritmos e lp parte3-pseudocódigo
Algoritmos e lp parte3-pseudocódigo
 
Linguagem C - Estruturas
Linguagem C - EstruturasLinguagem C - Estruturas
Linguagem C - Estruturas
 
Python - Introdução
Python - IntroduçãoPython - Introdução
Python - Introdução
 
Algoritmos - Aula 05 A - Correcao de Exercicios
Algoritmos - Aula 05 A - Correcao de ExerciciosAlgoritmos - Aula 05 A - Correcao de Exercicios
Algoritmos - Aula 05 A - Correcao de Exercicios
 
POO - 03 - Alocação de Memória em Java
POO - 03 - Alocação de Memória em JavaPOO - 03 - Alocação de Memória em Java
POO - 03 - Alocação de Memória em Java
 
Introdução a estruturas de dados em python
Introdução a estruturas de dados em pythonIntrodução a estruturas de dados em python
Introdução a estruturas de dados em python
 
Algoritmos de ordenação
Algoritmos de ordenaçãoAlgoritmos de ordenação
Algoritmos de ordenação
 
Apresentação 20130805 algoritmos
Apresentação 20130805 algoritmos Apresentação 20130805 algoritmos
Apresentação 20130805 algoritmos
 
Estruturas em C++ (struct)
Estruturas em C++ (struct)Estruturas em C++ (struct)
Estruturas em C++ (struct)
 
Estrutura de dados - Pilhas
Estrutura de dados - PilhasEstrutura de dados - Pilhas
Estrutura de dados - Pilhas
 
Linguagem C clecioamerico
Linguagem C clecioamericoLinguagem C clecioamerico
Linguagem C clecioamerico
 
Java: Manipulação de Arquivos
Java:  Manipulação  de ArquivosJava:  Manipulação  de Arquivos
Java: Manipulação de Arquivos
 
Pseudocódigo ou Portugol (Lógica de Programação)
Pseudocódigo ou Portugol (Lógica de Programação)Pseudocódigo ou Portugol (Lógica de Programação)
Pseudocódigo ou Portugol (Lógica de Programação)
 
Laços de Repetição - Linguagem C
Laços de Repetição - Linguagem CLaços de Repetição - Linguagem C
Laços de Repetição - Linguagem C
 
Introdução à Linguagem C
Introdução à Linguagem CIntrodução à Linguagem C
Introdução à Linguagem C
 
Pseudocódigo - Estrutura de Repetição (Lógica de Programação)
Pseudocódigo - Estrutura de Repetição (Lógica de Programação)Pseudocódigo - Estrutura de Repetição (Lógica de Programação)
Pseudocódigo - Estrutura de Repetição (Lógica de Programação)
 
Introdução a Algoritmos: Conceitos Básicos
Introdução a Algoritmos: Conceitos BásicosIntrodução a Algoritmos: Conceitos Básicos
Introdução a Algoritmos: Conceitos Básicos
 
Estrutura de dados em Java - Pilhas
Estrutura de dados em Java - PilhasEstrutura de dados em Java - Pilhas
Estrutura de dados em Java - Pilhas
 
Exercicios resolvidos visuAlg
Exercicios resolvidos visuAlgExercicios resolvidos visuAlg
Exercicios resolvidos visuAlg
 

En vedette

Revisão sobre ponteiros em C
Revisão sobre ponteiros em CRevisão sobre ponteiros em C
Revisão sobre ponteiros em CPablo Silva
 
Laboratório de Programação II: Tipo Abstrato de Dados (TAD)
Laboratório de Programação II: Tipo Abstrato de Dados (TAD)Laboratório de Programação II: Tipo Abstrato de Dados (TAD)
Laboratório de Programação II: Tipo Abstrato de Dados (TAD)Alex Camargo
 
Laboratório de Programação II: Uso do ponteiro void *
Laboratório de Programação II: Uso do ponteiro void *Laboratório de Programação II: Uso do ponteiro void *
Laboratório de Programação II: Uso do ponteiro void *Alex Camargo
 
Linguagem C 04 Estruturas De Repeticao
Linguagem C 04 Estruturas De RepeticaoLinguagem C 04 Estruturas De Repeticao
Linguagem C 04 Estruturas De RepeticaoRegis Magalhães
 
Linguagem C 01 Primeiros Passos
Linguagem C 01 Primeiros PassosLinguagem C 01 Primeiros Passos
Linguagem C 01 Primeiros PassosRegis Magalhães
 
Linguagem C 05 Vetores E Matrizes
Linguagem C 05 Vetores E MatrizesLinguagem C 05 Vetores E Matrizes
Linguagem C 05 Vetores E MatrizesRegis Magalhães
 
Linguagem C 03 Estruturas De Decisao
Linguagem C 03 Estruturas De DecisaoLinguagem C 03 Estruturas De Decisao
Linguagem C 03 Estruturas De DecisaoRegis Magalhães
 
Linguagem C 08 Definicao De Tipos
Linguagem C 08 Definicao De TiposLinguagem C 08 Definicao De Tipos
Linguagem C 08 Definicao De TiposRegis Magalhães
 
Introduction C Programming
Introduction C ProgrammingIntroduction C Programming
Introduction C Programmingrattanano
 
Brief introduction to the c programming language
Brief introduction to the c programming languageBrief introduction to the c programming language
Brief introduction to the c programming languageKumar Gaurav
 
ICC - Aula 04 - Expressões literais, comando de atribuição e de entrada/saída
ICC - Aula 04 - Expressões literais, comando de atribuição e de entrada/saídaICC - Aula 04 - Expressões literais, comando de atribuição e de entrada/saída
ICC - Aula 04 - Expressões literais, comando de atribuição e de entrada/saídaFelipe J. R. Vieira
 
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...Leinylson Fontinele
 
Introduction to c programming
Introduction to c programmingIntroduction to c programming
Introduction to c programmingManoj Tyagi
 
Comandos de pascal e estrutura de repetição (para...fazer)
Comandos de pascal e estrutura de repetição (para...fazer)Comandos de pascal e estrutura de repetição (para...fazer)
Comandos de pascal e estrutura de repetição (para...fazer)111111119
 

En vedette (20)

Revisão sobre ponteiros em C
Revisão sobre ponteiros em CRevisão sobre ponteiros em C
Revisão sobre ponteiros em C
 
Laboratório de Programação II: Tipo Abstrato de Dados (TAD)
Laboratório de Programação II: Tipo Abstrato de Dados (TAD)Laboratório de Programação II: Tipo Abstrato de Dados (TAD)
Laboratório de Programação II: Tipo Abstrato de Dados (TAD)
 
Laboratório de Programação II: Uso do ponteiro void *
Laboratório de Programação II: Uso do ponteiro void *Laboratório de Programação II: Uso do ponteiro void *
Laboratório de Programação II: Uso do ponteiro void *
 
Linguagem C 02 String
Linguagem C 02 StringLinguagem C 02 String
Linguagem C 02 String
 
Linguagem C 04 Estruturas De Repeticao
Linguagem C 04 Estruturas De RepeticaoLinguagem C 04 Estruturas De Repeticao
Linguagem C 04 Estruturas De Repeticao
 
Listas em C
Listas em CListas em C
Listas em C
 
Linguagem C 01 Primeiros Passos
Linguagem C 01 Primeiros PassosLinguagem C 01 Primeiros Passos
Linguagem C 01 Primeiros Passos
 
Linguagem C 06 Funcoes
Linguagem C 06 FuncoesLinguagem C 06 Funcoes
Linguagem C 06 Funcoes
 
Linguagem C 05 Vetores E Matrizes
Linguagem C 05 Vetores E MatrizesLinguagem C 05 Vetores E Matrizes
Linguagem C 05 Vetores E Matrizes
 
Linguagem C 03 Estruturas De Decisao
Linguagem C 03 Estruturas De DecisaoLinguagem C 03 Estruturas De Decisao
Linguagem C 03 Estruturas De Decisao
 
Linguagem C 08 Definicao De Tipos
Linguagem C 08 Definicao De TiposLinguagem C 08 Definicao De Tipos
Linguagem C 08 Definicao De Tipos
 
Linguagem C 10 Arquivos
Linguagem C 10 ArquivosLinguagem C 10 Arquivos
Linguagem C 10 Arquivos
 
Introduction C Programming
Introduction C ProgrammingIntroduction C Programming
Introduction C Programming
 
Linguagem c
Linguagem cLinguagem c
Linguagem c
 
Brief introduction to the c programming language
Brief introduction to the c programming languageBrief introduction to the c programming language
Brief introduction to the c programming language
 
ICC - Aula 04 - Expressões literais, comando de atribuição e de entrada/saída
ICC - Aula 04 - Expressões literais, comando de atribuição e de entrada/saídaICC - Aula 04 - Expressões literais, comando de atribuição e de entrada/saída
ICC - Aula 04 - Expressões literais, comando de atribuição e de entrada/saída
 
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...
 
Introduction to c programming
Introduction to c programmingIntroduction to c programming
Introduction to c programming
 
Comandos de pascal e estrutura de repetição (para...fazer)
Comandos de pascal e estrutura de repetição (para...fazer)Comandos de pascal e estrutura de repetição (para...fazer)
Comandos de pascal e estrutura de repetição (para...fazer)
 
High Dimensional Data
High Dimensional DataHigh Dimensional Data
High Dimensional Data
 

Similaire à Ponteiros em C

Similaire à Ponteiros em C (20)

C++ Standard Template Library
C++ Standard Template LibraryC++ Standard Template Library
C++ Standard Template Library
 
Função malloc
Função mallocFunção malloc
Função malloc
 
Conhecendo ou relembrando C
Conhecendo ou relembrando CConhecendo ou relembrando C
Conhecendo ou relembrando C
 
Introdução a Linguagem C
Introdução a Linguagem CIntrodução a Linguagem C
Introdução a Linguagem C
 
Ling c
Ling cLing c
Ling c
 
Java4
Java4Java4
Java4
 
Workshop Python.1
Workshop Python.1Workshop Python.1
Workshop Python.1
 
unidade04-c3-handout.pdf
unidade04-c3-handout.pdfunidade04-c3-handout.pdf
unidade04-c3-handout.pdf
 
Linguagem c wellington telles - aula 03
Linguagem c   wellington telles - aula 03Linguagem c   wellington telles - aula 03
Linguagem c wellington telles - aula 03
 
Pymordida0 Semana de computação da SOCIESC - 2008/10
Pymordida0 Semana de computação da SOCIESC - 2008/10Pymordida0 Semana de computação da SOCIESC - 2008/10
Pymordida0 Semana de computação da SOCIESC - 2008/10
 
Ed1
Ed1Ed1
Ed1
 
Python Emsl2009
Python Emsl2009Python Emsl2009
Python Emsl2009
 
Comandos de Controle de Programa em C
Comandos de Controle de Programa em CComandos de Controle de Programa em C
Comandos de Controle de Programa em C
 
8 ponteiros, ponteiros e vetores e alocacao dinamica de memoria
8   ponteiros,  ponteiros e vetores e alocacao dinamica de memoria8   ponteiros,  ponteiros e vetores e alocacao dinamica de memoria
8 ponteiros, ponteiros e vetores e alocacao dinamica de memoria
 
Biblioteca strings profª ms
Biblioteca strings profª msBiblioteca strings profª ms
Biblioteca strings profª ms
 
Mini Curso de Python para Coding Dojo
Mini Curso de Python para Coding DojoMini Curso de Python para Coding Dojo
Mini Curso de Python para Coding Dojo
 
Estruturas
EstruturasEstruturas
Estruturas
 
Aula 7 pc - estrutura
Aula 7   pc - estruturaAula 7   pc - estrutura
Aula 7 pc - estrutura
 
Aula de Algoritmos II - Turma 222
Aula de Algoritmos II - Turma 222Aula de Algoritmos II - Turma 222
Aula de Algoritmos II - Turma 222
 
Logica Algoritmo 07 Subalgoritmos
Logica Algoritmo 07 SubalgoritmosLogica Algoritmo 07 Subalgoritmos
Logica Algoritmo 07 Subalgoritmos
 

Plus de Regis Magalhães

Prog web 01-php-introducao
Prog web 01-php-introducaoProg web 01-php-introducao
Prog web 01-php-introducaoRegis Magalhães
 
Prog web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosProg web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosRegis Magalhães
 
Prog web 00-modelo-cliente_servidor_web
Prog web 00-modelo-cliente_servidor_webProg web 00-modelo-cliente_servidor_web
Prog web 00-modelo-cliente_servidor_webRegis Magalhães
 
Prog web 03-php-sessoes-cookies_cabecalhos
Prog web 03-php-sessoes-cookies_cabecalhosProg web 03-php-sessoes-cookies_cabecalhos
Prog web 03-php-sessoes-cookies_cabecalhosRegis Magalhães
 
Prog web 03-php-sessoes-cookies_cabecalhos
Prog web 03-php-sessoes-cookies_cabecalhosProg web 03-php-sessoes-cookies_cabecalhos
Prog web 03-php-sessoes-cookies_cabecalhosRegis Magalhães
 
Prog web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosProg web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosRegis Magalhães
 
Prog web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosProg web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosRegis Magalhães
 
Prog web 00-modelo-cliente_servidor_web
Prog web 00-modelo-cliente_servidor_webProg web 00-modelo-cliente_servidor_web
Prog web 00-modelo-cliente_servidor_webRegis Magalhães
 
Prog web 01-php-introducao
Prog web 01-php-introducaoProg web 01-php-introducao
Prog web 01-php-introducaoRegis Magalhães
 
Linked Data Tutorial - Conferencia W3C Brasil 2011
Linked Data Tutorial - Conferencia W3C Brasil 2011Linked Data Tutorial - Conferencia W3C Brasil 2011
Linked Data Tutorial - Conferencia W3C Brasil 2011Regis Magalhães
 
Linked Data - Minicurso - SBBD 2011
Linked Data - Minicurso - SBBD 2011Linked Data - Minicurso - SBBD 2011
Linked Data - Minicurso - SBBD 2011Regis Magalhães
 

Plus de Regis Magalhães (20)

Web Scale Data Management
Web Scale Data ManagementWeb Scale Data Management
Web Scale Data Management
 
PHP 10 CodeIgniter
PHP 10 CodeIgniterPHP 10 CodeIgniter
PHP 10 CodeIgniter
 
Prog web 01-php-introducao
Prog web 01-php-introducaoProg web 01-php-introducao
Prog web 01-php-introducao
 
Prog web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosProg web 02-php-primeiros-passos
Prog web 02-php-primeiros-passos
 
Prog web 00-modelo-cliente_servidor_web
Prog web 00-modelo-cliente_servidor_webProg web 00-modelo-cliente_servidor_web
Prog web 00-modelo-cliente_servidor_web
 
Prog web 09-php-crud-mvc
Prog web 09-php-crud-mvcProg web 09-php-crud-mvc
Prog web 09-php-crud-mvc
 
Prog web 08-php-mvc
Prog web 08-php-mvcProg web 08-php-mvc
Prog web 08-php-mvc
 
Prog web 07-pdo
Prog web 07-pdoProg web 07-pdo
Prog web 07-pdo
 
Prog web 06-php-oo
Prog web 06-php-ooProg web 06-php-oo
Prog web 06-php-oo
 
Prog web 05-php-mysql
Prog web 05-php-mysqlProg web 05-php-mysql
Prog web 05-php-mysql
 
Prog web 04-php-gd
Prog web 04-php-gdProg web 04-php-gd
Prog web 04-php-gd
 
Prog web 03-php-sessoes-cookies_cabecalhos
Prog web 03-php-sessoes-cookies_cabecalhosProg web 03-php-sessoes-cookies_cabecalhos
Prog web 03-php-sessoes-cookies_cabecalhos
 
Prog web 03-php-sessoes-cookies_cabecalhos
Prog web 03-php-sessoes-cookies_cabecalhosProg web 03-php-sessoes-cookies_cabecalhos
Prog web 03-php-sessoes-cookies_cabecalhos
 
Prog web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosProg web 02-php-primeiros-passos
Prog web 02-php-primeiros-passos
 
Prog web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosProg web 02-php-primeiros-passos
Prog web 02-php-primeiros-passos
 
Prog web 00-modelo-cliente_servidor_web
Prog web 00-modelo-cliente_servidor_webProg web 00-modelo-cliente_servidor_web
Prog web 00-modelo-cliente_servidor_web
 
Prog web 01-php-introducao
Prog web 01-php-introducaoProg web 01-php-introducao
Prog web 01-php-introducao
 
Linked Data Tutorial - Conferencia W3C Brasil 2011
Linked Data Tutorial - Conferencia W3C Brasil 2011Linked Data Tutorial - Conferencia W3C Brasil 2011
Linked Data Tutorial - Conferencia W3C Brasil 2011
 
Linked Data - Minicurso - SBBD 2011
Linked Data - Minicurso - SBBD 2011Linked Data - Minicurso - SBBD 2011
Linked Data - Minicurso - SBBD 2011
 
Curso Ruby
Curso RubyCurso Ruby
Curso Ruby
 

Ponteiros em C

  • 1. Linguagem C Ponteiros Regis Pires Magalhães [email_address]
  • 2.
  • 3.
  • 4. Exemplo #include <stdio.h> int main() { int x = 5; int *px; px = &x; printf ( &quot;x: %d&quot; , x); printf ( &quot;px: %d&quot; , *px); return 0; }
  • 5. Exemplo #include <stdio.h> int main() { int x = 5; int *px; px = &x; printf ( &quot;x: %d&quot; , x); printf ( &quot;px: %d&quot; , *px); x = 7; printf ( &quot;x: %d&quot; , x); printf ( &quot;px: %d&quot; , *px); *px = 3; printf ( &quot;x: %d&quot; , x); printf ( &quot;px: %d&quot; , *px); return 0; }
  • 6. Ponteiro para char #include <stdio.h> int strtamanho( char *str) { int tamanho = 0; while (*str) { tamanho++; str++; } return tamanho; } int main() { char palavra[100]; printf ( &quot;Digite uma palavra: &quot; ); gets (palavra); printf ( &quot;O tamanho e: %d&quot; , strtamanho(palavra)); return 0; }
  • 7. Ponteiro para char #include <stdio.h> char *strupper( char *str) { char *inicio; inicio = str; while (*str) { *str = toupper(*str); str++; } return inicio; } int main() { char palavra[100]; printf ( &quot;Digite uma palavra: &quot; ); gets (palavra); printf ( &quot;Em caixa alta: %s&quot; , strupper(palavra)); return 0; }
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13. Ponteiros para estruturas #include <stdio.h> #include <string.h> #include <stdlib.h> struct pessoa { char nome [50]; int idade ; }; typedef struct pessoa Pessoa ; int main() { Pessoa *p = malloc( sizeof ( Pessoa )); strcpy (p-> nome , &quot;Regis&quot; ); p-> idade = 18; printf ( &quot;Nome: %s - Idade: %d&quot; , p-> nome , p-> idade ); free(p); return 0; }
  • 14. Exemplo #include <stdio.h> #include <string.h> #include <stdlib.h> struct pessoa { char nome [50]; int idade ; }; typedef struct pessoa Pessoa ; int main() { Pessoa *p = malloc(2 * sizeof ( Pessoa )); Pessoa *inicio = p; strcpy (p-> nome , &quot;Regis&quot; ); p-> idade = 18; p++; strcpy (p-> nome , &quot;Maria&quot; ); p-> idade = 25; p = inicio; printf ( &quot;Nome: %s - Idade: %d&quot; , p-> nome , p-> idade ); p++; printf ( &quot;Nome: %s - Idade: %d&quot; , p-> nome , p-> idade ); free(inicio); return 0; }
  • 15. Exemplo #include <stdio.h> #include <string.h> #include <stdlib.h> struct pessoa { char nome [50]; int idade ; }; typedef struct pessoa Pessoa ; int main() { Pessoa *p = malloc(2 * sizeof ( Pessoa )); strcpy (p[0]. nome , &quot;Regis&quot; ); p[0]. idade = 18; strcpy (p[1]. nome , &quot;Maria&quot; ); p[1]. idade = 25; printf ( &quot;Nome: %s - Idade: %d&quot; , p[0]. nome , p[0]. idade ); printf ( &quot;Nome: %s - Idade: %d&quot; , p[1]. nome , p[1]. idade ); free(p); return 0; }
  • 16.
  • 17. Passagem parâmetros por referência #include <stdio.h> void troca( int *x, int *y) { int aux = *x; *x = *y; *y = aux; } int main() { int n1, n2; printf ( &quot;Digite n1: &quot; ); scanf ( &quot;%d&quot; , &n1); printf ( &quot;Digite n2: &quot; ); scanf ( &quot;%d&quot; , &n2); troca(&n1, &n2); printf ( &quot;n1 eh: %d&quot; , n1); printf ( &quot;n2 eh: %d&quot; , n2); return 0; }
  • 20. Lista Encadeada Simples #include <stdio.h> #include <stdlib.h> typedef struct pessoa Pessoa ; struct pessoa { char nome [50]; int idade ; Pessoa * proximo ; }; int main() { Pessoa *pAtual, *pInicio = NULL, *pAnterior = NULL; char continua; do { pAtual = malloc( sizeof ( Pessoa )); printf ( &quot;Digite um nome: &quot; ); gets (pAtual-> nome ); printf ( &quot;Digite a idade: &quot; ); scanf ( &quot;%d&quot; , &pAtual-> idade ); getchar (); if (pInicio == NULL) { pInicio = pAtual; } if (pAnterior != NULL) { pAnterior-> proximo = pAtual; } pAnterior = pAtual; printf ( &quot;Insere mais (S/N)? &quot; ); continua = getchar (); getchar (); } while (toupper(continua) != 'N' ); pAtual = pInicio; while (pAtual != NULL) { printf ( &quot;Nome: %s - Idade: %d&quot; , pAtual-> nome , pAtual-> idade ); pAtual = pAtual-> proximo ; } }