AULA 5. Conceitos. Melhores momentos. Conceitos. Conceitos. Conceitos. Conceitos

Documentos relacionados
AULA 5. Registros e Structs. Registros e Structs. Pausa para nossos comerciais. Hoje. Registros e structs

AULA 6. Conceitos. Melhores momentos. Conceitos. Conceitos. Conceitos. Conceitos

union [<union-type-name>] { <type> <variable-names> ;... } [<union-variables>] ; union int_or_long { int i; long l; } a_number;

Melhores momentos AULA 5

Programação de Computadores II

Plano de Aula Segunda-feira Tarde 13/10/2014 Objetivo: Introduzir o conceito de alocação dinâmica na memória e registros / structs.

Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP. Alocação Dinâmica de Memória

Ponteiros e Alocação Dinâmica. Prof. Péricles Miranda

Alocação Dinâmica. Túlio Toffolo BCC202 Aula 02 Algoritmos e Estruturas de Dados I

Linguagem C. Ponteiros. Alex Vidigal Bastos.

Ponteiros e alocação dinâmica de memória. Disciplina de Programação de Computadores I Universidade Federal de Ouro Preto

Aula 25: Alocação Dinâmica

Pausa para nossos comerciais

Ponteiros. Baseado nos slides do Prof. Mauro.

BCC202 - Estrutura de Dados I

BCC Introdu c ao ` a Programa c ao I Ponteiros Guillermo C amara-ch avez UFOP 1/61

Alocação Dinâmica de Memória. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR

Ponteiros - Parte I. Ponteiros, Ponteiros e Vetores, Algoritmo Bubble Sort, Alocação Dinâmica de Memória

Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP. Alocação Dinâmica de Memória

Alocação Dinâmica de Memória

a) Preencher um vetor com os números 0 a 10, e depois mostrar somente os elementos pares.

Linguagem C: Ponteiros - Alocação Dinâmica

Introdução à Ciência da Computação I. Alocação Dinâmica. Prof. Claudio Fabiano Motta Toledo

Aula 17: Ponteiros e Alocação Dinâmica em C

INF 1007 Programação II

Ponteiro. Ponteiro. Objetivo. Compreender a definição e dominar a implementação de ponteiros em C.

Ponteiros e Alocação de Memória

Alocação Dinâmica de Memória

Introdução à Computação

INF 1007 Programação II

Ponteiros & tabelas (cont.) K&R: Capítulo 5

Programação Estruturada Prof. Rodrigo Hausen Organização e Gerenciamento de Memória

Curso de Programação C em Ambientes Linux Aula 05

Exercícios. Alocação Dinâmica. Alocação dinâmica de memória. Alocação de memória. Alocação da Memória Principal. Alocação da Memória Principal

Introdução a Programação. Ponteiros e Vetores, Alocação Dinâmica

Ponteiros e Tabelas. K&R: Capitulo 5 IAED, 2012/2013

Ponteiros e Tabelas. K&R: Capitulo 5 IAED, 2012/2013

Ponteiros. Embora o programador não tenha acesso ao endereço de uma variável, existem algumas situações onde é necessário a utilização deste endereço.

Aula 24: Ponteiros e Alocação Dinâmica

1 Exercícios com ponteiros

INF 1007 Programação II

Estruturas dinâmicas Ponteiros

ANHANGUERA ESTRUTURA DE DADOS AULA 04 MATRIZES, LISTAS E ALOCAÇÃO DINÂMICA. Prof. Thomás da Costa

LINGUAGEM C: ALOCAÇÃO DINÂMICA

ESTRUTURA DE DADOS VARIÁVEIS E PONTEIROS

CAP. 5. TÉCNICAS DE ORDENAÇÃO

SSC304 Introdução à Programação Para Engenharias. Alocação Dinâmica. GE4 Bio

MC-102 Aula 19 Ponteiros II

Princípios de Desenvolvimento de Algoritmos MAC122

Reinaldo Gomes Alocação Dinâmica

Estrutura de dados 1. Ponteiros

Programação Estruturada

Exercício. Alocação Dinâmica. Alocação dinâmica de memória. Alocação de memória. Alocação da Memória Principal. Alocação da Memória Principal

Ponteiros. Considere um carteiro recém-chegado na vila Na vila, a referência para se encontrar a casa é pelo morador

11a. Aula Ponteiros e Vetores

Linguagem C Ponteiros

Aula 24 Ponteiros, vetores e structs

Professora Jeane Melo

Aula 18: Funções em C

Laboratório de Programação II

Matrizes. Estruturas de Dados Aula 5: Matrizes. Vetor declaração estática. Vetor declaração dinâmica

BCC Introdu c ao ` a Programa c ao I Ponteiros Guillermo C amara-ch avez UFOP 1/54

Ponteiros e Tabelas. K&R: Capítulo 5

Estruturas de Dados Aula 5: Matrizes 23/03/2011

Alocação Dinâmica. Introdução à Computação

CES-11. Algoritmos e Estruturas de Dados. Esclarecimento sobre notação. Revisão. Revisão

1 Exercícios com ponteiros

Introdução a Programação. Ponteiros e Strings, Alocação Dinâmica

Ponteiros em C. Prof. Rui Jorge Tramontin Jr. UDESC - Rui J. Tramontin Jr. 1

Modulo 12: alocação dinâmica de memória

Estruturas de Dados Aula 5: Matrizes

Algoritmos e Estruturas de Dados. Prof. Marcelo Zorzan Profa. Melissa Zanatta

Estruturas de Dados. Introdução Definição de Ponteiros Declaração de Ponteiros em C Manipulação de Ponteiros em C

Introdução a Programação. Ponteiros para Estruturas, Outros Tipos de Estruturas

O que é um apontador em C (type pointer in C)?

Gilberto A. S. Segundo. 24 de agosto de 2011

Estruturas Dinâmicas - Ponteiros

Ponteiros. Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista

DAS5102 Fundamentos da Estrutura da Informação

Laboratório de Introdução à Ciência da Computação I

Linguagem de Programação

INTRODUÇÃO À LINGUAGEM C. Prof. Msc. Luis Filipe Alves Pereira 2015

INF 1620 P3-21/06/08 Questão 1 Nome:

Algoritmos e Estruturas de dados

Aula 27: Estruturas heterogêneas e alocação dinâmica

Estruturas de Dados Aulas 3 e 4: Uso da memória e Vetores

A linguagem C permite dois tipos de alocação de memória: Alocação estática e alocação dinâmica.

Programação de Computadores II

13. ALOCAÇÃO DINÂMICA DE MEMÓRIA

Alocação Dinâmica em C

Programação Procedimental GBC /1 Prof. Renan Cattelan Prática 10. Estruturas e alocação dinâmica

A sintaxe para se declarar uma variável do tipo ponteiro é dada por:

PONTEIROS E LISTAS. Kalinka Regina Lucas Jaquie Castelo Branco

Básico: estrutura de programa, sintaxe Interface com linha de comando

ED1 - Aula 01 Introducao e revisão

ALOCAÇÃO DINÂMICA DE MEMÓRIA

Representação de Dados Arrays e Structs

Transcrição:

Melhores momentos AULA 5 Endereços: a memóra é um etor e o índce desse etor onde está uma aráel é o endereço da aráel. Com o oerador & obtemos o endereço de uma aráel. Exemlos: & é o endereço de &onto é o endereço da estrutura onto &[2] é o endereço de [2] Ponteros: são aráes que armazenam endereços. Exemlos: nt *; /* ontero ara nt*/ char *q; /* ontero ara char*/ double *r; /* ontero ara double*/ Dereferencação: Se aonta ara a aráel, então * é snônmo de. = &; /* aonta ara / (*)++; é o mesmo que ++; * = Artmétca de onteros: se é um aontador ara um nt e o seu conteúdo é 64542, então + é 64546, os um nt ocua 4 bytes (no meu comutador...). + +2 +5 +9 [] [] [9] Vetores e onteros: o nome de um etor é snônmo do endereço da osção ncal do etor. nt []; é snônmo de &[] + é snônmo de &[] +2 é snônmo de &[2]... + +2 +5 +9 [] [] [9]

Vetores e onteros: o nome de um etor é snônmo do endereço da osção ncal do etor. nt []; * é snônmo de [] *(+) é snônmo de [] *(+2) é snônmo de [2]... + +2 +5 +9 Vetores como arâmetros Como arâmetros formas de uma função, e char s[ ]; char *s; são equalentes. O Kernghan e Rtche referem a segunda os dz mas exlctamente que a aráel é um aontador. Outro exemlo nt man(nt argc, char **arg); [] [] [9] Hoje AULA 6 alocação dnâmca de memóra Alocação dnâmca de memóra Alocação dnâmca PF Aêndce F htt://www.me.us.br/ f/algortmos/aulas/aloca.html The C rogrammng Language Bran W. Kernghan e Denns M. Rtche Prentce-Hall Fonte: htt://www.coderoject.com/

Alocação dnâmca As ezes, a quantdade de memóra que o rograma necessta só se torna conhecda durante a execução do rograma. Para ldar com essa stuação é recso recorrer à alocação dnâmca de memóra. A alocação dnâmca é gerencada elas funções e free, que estão na bbloteca stdlb #nclude <stdlb.h> A função aloca um bloco de bytes consecutos na memóra e deole o endereço desse bloco. tr char *tr; tr = (); scanf("%c",tr); tr tyedef struct { nt da,mes,ano; Data; Data *d; d = (szeof(data)); Se é ontero ara uma estrutura então ->camo-da-estrutura é uma abreatura de (*).camo-da-estrutura d->da=3; d->mes=2; d->ano=28; d d da mes d 3 2 da mes ano 28 ano A memóra é nta A memóra é nta Se não consegue alocar mas esaço então retorna NULL. tr = (szeof(data)); f (tr == NULL) { rntf("socorro! deoleu NULL!\n"); ext(exit_failure); É conenente usarmos a função od *Safe (nt nbytes) { od *tr; tr = (nbytes); f (tr == NULL) { rntf("socorro! deoleu " "NULL!\n"); ext(exit_failure); return tr;

free Vetores dnamcamente nt *; nt, n; Fonte: htt://www.zazzle.com.br/ A função free lbera a memóra alocada or. free(d); Há essoas que or questões de segurança gostam de atrbur NULL a um ontero deos da lberaçõa de memóra free(d); d = NULL; rntf("dgte o tamanho do etor: "); scanf("%d", &n); = Safe(n*szeof(nt)); for ( = ; < n; ++) *(+) = ; /* [] = ; */ for ( = ; < n; ++) rntf("end. [%d] = % cont [%d] = %d\n",, (od*)(+),, []); free(); Matrzes dnâmcas Matrzes dnâmcas Matrzes bdmensonas são mlementadas como etores de etores. a m = 6 n = 7 nt **a; nt ; a = Safe(m * szeof(nt*)); for ( = ; < m; ++) a[] = Safe(n * szeof(nt)); 2 a [2] [3] == 7 2 3 4 5 6 5 3 7 3 8 O elemento de a que está na lnha e coluna j é a[][j]. 3 4 5 6 2 6 4 2 8 Lberação de memóra de matrzes Para lberarmos a memóra alocada dnamcamente ara uma matrz deemos segur os assos nersos aos da alocação trocando Safe or free. od freematrzint(nt **a) { nt ; for ( = ; < m; ++){ free(a[]); /* lberar a lnha */ a[] = NULL; free(a);/* lbera etor de onteros */ a = NULL; a nt a[3][4]; Matrzes automátcas a [] [2] == 8 2 3 2 3 2 3 8 4 a a a [] [] [2]

Passagem de arâmetros Suonha que temos os rotótos de funções od f(nt **m); nt g(nt m[][64]); e as declarações nt **a; nt m[6][64]; então temos que f(a); /* ok */ = g(a); /* erro */ = g(m); /* ok */ f(m); /* erro */