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

Tamanho: px
Começar a partir da página:

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

Transcrição

1

2 Ponteiro Definição de variável apontadora Aritmética de ponteiros Ponteiros e vetores Funções e passagem por referência Structs e ponteiros Alocação dinâmica de memória

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

4 Como ocorre a declaração e atribuição de valores em variáveis de tipos primitivos? int x = 4;

5 Como ocorre a declaração e atribuição de valores em variáveis de tipos primitivos? int x = 4; 1º: alocação de espaço de armazenamento com endereçamento para permitir o acesso a este espaço. x 32 bits endereço conteúdo

6 Como ocorre a declaração e atribuição de valores em variáveis de tipos primitivos? int x = 4; 1º: alocação de espaço de armazenamento com endereçamento para permitir o acesso a este espaço. x 32 bits endereço conteúdo

7 Como ocorre a declaração e atribuição de valores em variáveis de tipos primitivos? int x = 4; 1º: alocação de espaço de armazenamento com endereçamento para permitir o acesso a este espaço. x 32 bits endereço Célula Célula Célula Célula conteúdo

8 Como ocorre a declaração e atribuição de valores em variáveis de tipos primitivos? int x = 4; 1º: alocação de espaço de armazenamento com endereçamento para permitir o acesso a este espaço. x 32 bits 1 byte 1 byte 1 byte 1 byte endereço Célula Célula Célula Célula conteúdo

9 Como ocorre a declaração e atribuição de valores em variáveis de tipos primitivos? int x = 4; 1º: alocação de espaço de armazenamento com endereçamento para permitir o acesso a este espaço. x bits 1 byte 1 byte 1 byte 1 byte endereço conteúdo

10 Como ocorre a declaração e atribuição de valores em variáveis de tipos primitivos? int x = 4; 1º: alocação de espaço de armazenamento com endereçamento para permitir o acesso a este espaço. x 32 bits 1 byte 1 byte 1 byte 1 byte endereço = conteúdo

11 Como ocorre a declaração e atribuição de valores em variáveis de tipos primitivos? int x = 4; 1º: alocação de espaço de armazenamento com endereçamento para permitir o acesso a este espaço. x bits 1 byte 1 byte 1 byte 1 byte endereço conteúdo

12 Como ocorre a declaração e atribuição de valores em variáveis de tipos primitivos? int x = 4; 1º: alocação de espaço de armazenamento com endereçamento para permitir o acesso a este espaço. x bits 1 byte 1 byte 1 byte 1 byte endereço conteúdo

13 Como ocorre a declaração e atribuição de valores em variáveis de tipos primitivos? int x = 4; 1º: alocação de espaço de armazenamento com endereçamento para permitir o acesso a este espaço. x bits 1 byte 1 byte 1 byte 1 byte endereço conteúdo

14 Como ocorre a declaração e atribuição de valores em variáveis de tipos primitivos? int x = 4; 2º: atribuição de valor de acordo com o tipo definido no espaço de conteúdo. x 32 bits endereço 4 conteúdo

15 Como ocorre a declaração e atribuição de valores em variáveis de tipos primitivos? int x = 4; 2º: atribuição de valor de acordo com o tipo definido no espaço de conteúdo. x endereço conteúdo

16 Como ocorre a declaração e atribuição de valores em variáveis de tipos primitivos? int x = 4; 2º: atribuição de valor de acordo com o tipo definido no espaço de conteúdo. x endereço conteúdo

17 Como ocorre a declaração e atribuição de valores em variáveis de tipos primitivos? int x = 4; int y;

18 Como ocorre a declaração e atribuição de valores em variáveis de tipos primitivos? int x = 4; x int y; endereço 4 conteúdo

19 Como ocorre a declaração e atribuição de valores em variáveis de tipos primitivos? int x = 4; x int y; y endereço 4 conteúdo endereço conteúdo

20 Como ocorre a declaração e atribuição de valores em variáveis de tipos primitivos? int x = 4; x int y; y = x; y endereço conteúdo endereço 4 conteúdo

21 Como ocorre a declaração e atribuição de valores em variáveis de tipos primitivos? int x = 4; x int* p; endereço 4 conteúdo

22 Como ocorre a declaração e atribuição de valores em variáveis de tipos primitivos? int x = 4; x int* p; p endereço 4 conteúdo endereço conteúdo

23 Como ocorre a declaração e atribuição de valores em variáveis de tipos primitivos? int x = 4; x int* p; p = &x; p endereço conteúdo endereço conteúdo

24 Como ocorre a declaração e atribuição de valores em variáveis de tipos primitivos? int x = 4; x int* p; p = &x; p endereço conteúdo endereço conteúdo

25 Como ocorre a declaração e atribuição de valores em variáveis de tipos primitivos? int x = 4; x int* p; p = &x; endereço conteúdo *p = 10; p endereço conteúdo

26 Como ocorre a declaração e atribuição de valores em variáveis de tipos primitivos? int x = 4; x int* p; p = &x; endereço conteúdo *p = 10; p endereço conteúdo

27 Como ocorre a declaração e atribuição de valores em variáveis de tipos primitivos? int x = 4; x int* p; p = &x; endereço conteúdo *p = 10; p endereço conteúdo

28 Como ocorre a declaração e atribuição de valores em variáveis de tipos primitivos? int x = 4; x int* p; p = &x; endereço conteúdo *p = 10; p endereço conteúdo

29 Como ocorre a declaração e atribuição de valores em variáveis de tipos primitivos? int x = 4; x int* p; p = &x; endereço conteúdo *p = 10; p endereço conteúdo

30 Variáveis Apontadoras Como visto, qualquer variável tem um nome, conteúdo e endereço. Uma variável apontadora é um caso particular em que o valor (inteiro) que ela contém é um endereço de memória.

31 Variáveis Apontadoras Como visto, qualquer variável tem um nome, conteúdo e endereço. Uma variável apontadora é um caso particular em que o valor (inteiro) que ela contém é um endereço de memória. Observe que uma variável apontadora sempre armazenará valores inteiros.

32 Variáveis Apontadoras - Declaração <tipoapontado> * <nome> ; Exemplos: int* p1; char* p2; float* p3, p4;//p4 será uma variável comum float *p3, *p4;//p4 será uma variável ponteiro double* p4;

33 Operador de Endereço (&) Retorna o endereço de uma variável; Útil interpretá-la como endereço de. Exemplo: int x = 4; int* px; px = &x; //px recebe o endereço de x

34 Operador Apontador (*) Pode-se atribuir um valor à variável apontada pelo ponteiro. Útil interpretá-lo como o conteúdo apontado por.

35 Exemplo: int x = 4; int* px = &x; *px = 10; Ponteiro Ponteiro Operador Apontador (*) o conteúdo apontado por px receberá o valor 10. No caso, o conteúdo da variável x;

36 Operador Apontador (*) Posso atribuir a uma variável do tipo int um endereço de uma variável? Sim. (Ex: int x, y; x = &y;) Posso alterar o conteúdo de uma variável utilizando o operador apontador em uma variável do tipo int que está armazenando um endereço de memória? Não. (Ex: int x, y; x = &y; *x = 10; //erro de compilação)

37 Ponteiros e operações aritméticas Posso efetuá-las com ponteiros? Sim, lembre-se que as operações serão efetuadas em endereços, já que ponteiros armazenam endereços. As operações possíveis com ponteiros são as de soma (+), subtração (-), incremento (++) e decremento (--).

38 Ponteiros e operações aritméticas Operações com ponteiros de inteiros: int x = 10; //supondo &x = 1234 int y = 20; //então, &y = 1238

39 Ponteiros e operações aritméticas Operações com ponteiros de inteiros: int x = 10; //supondo &x = 1234 int y = 20; //então, &y = 1238 int* p = &x; //p = 1234

40 Ponteiros e operações aritméticas Operações com ponteiros de inteiros: int x = 10; //supondo &x = 1234 int y = 20; //então, &y = 1238 int* p = &x; //p = 1234 p = p + 1; // p = 1238

41 Ponteiros e operações aritméticas Operações com ponteiros de inteiros: int x = 10; //supondo &x = 1234 int y = 20; //então, &y = 1238 int* p = &x; //p = 1234 p = p + 1; // p = 1238 p = p 1; // p = 1234

42 Ponteiros e operações aritméticas Operações com ponteiros de inteiros: int x = 10; //supondo &x = 1234 int y = 20; //então, &y = 1238 int* p = &x; //p = 1234 p = p + 1; // p = 1238 p = p 1; // p = 1234 p++; // p = 1238

43 Ponteiros e operações aritméticas Operações com ponteiros de inteiros: int x = 10; //supondo &x = 1234 int y = 20; //então, &y = 1238 int* p = &x; //p = 1234 p = p + 1; // p = 1238 p = p 1; // p = 1234 p++; // p = 1238 P--; // p = 1234

44 Ponteiros e operações aritméticas Operações com ponteiros de reais (double): double x; //supondo &x = 1238 double y; //então, &y = 1246 double* p = &x; //p = 1238 p = p + 1; // p = 1246 p = p 1; // p = 1238 p++; // p = 1246 P--; // p = 1238

45 Ponteiros e operações aritméticas Operações com ponteiros de char: char x; //supondo &x = 1231 char y; //então, &y = 1232 char* p = &x; //p = 1231 p = p + 1; // p = 1232 p = p 1; // p = 1231 p++; // p = 1232 P--; // p = 1231

46 Vetores e ponteiros Como se sabe, em uma variável simples, ao efetuarmos tal comando, int x = 20, y; y = x; no lugar do nome x, é retornado o valor da variável. Para retornarmos seu endereço, utilizamos: y = &x;

47 Vetores e ponteiros O que aconteceria se fizéssemos esse comando com um vetor? int vet[5]; int* x = vet; O nome de um vetor atribuído a uma variável retorna o endereço do próprio vetor.

48 Vetores e ponteiros Como funciona o endereçamento de um vetor? int vet[5]; //supondo vet = 1111

49 Vetores e ponteiros Como funciona o endereçamento de um vetor? int vet[5]; //supondo vet = 1111 vet índices conteúdo conteúdo conteúdo conteúdo conteúdo

50 Vetores e ponteiros Como funciona o endereçamento de um vetor? int vet[5]; //supondo vet = 1111 vet 1111 índices conteúdo conteúdo conteúdo conteúdo conteúdo

51 Vetores e ponteiros Como funciona o endereçamento de um vetor? int vet[5]; //supondo vet = 1111 vet 1111 índices conteúdo conteúdo conteúdo conteúdo conteúdo

52 Vetores e ponteiros Como funciona o endereçamento de um vetor? int vet[5]; //supondo vet = 1111 vet 1111 índices conteúdo conteúdo conteúdo conteúdo conteúdo

53 Vetores e ponteiros Como funciona o endereçamento de um vetor? int vet[5]; //supondo vet = 1111 vet 1111 índices conteúdo conteúdo conteúdo conteúdo conteúdo

54 Vetores e ponteiros Como funciona o endereçamento de um vetor? int vet[5]; //supondo vet = 1111 vet 1111 índices conteúdo conteúdo conteúdo conteúdo conteúdo

55 Vetores e ponteiros Como funciona o endereçamento de um vetor? int vet[5]; //supondo vet = 1111 vet 1111 índices conteúdo conteúdo conteúdo conteúdo conteúdo

56 Vetores e ponteiros Como funciona o endereçamento de um vetor? int vet[5]; //supondo vet = 1111 vet 1111 índices conteúdo conteúdo conteúdo conteúdo conteúdo

57 Vetores e ponteiros Como funciona o endereçamento de um vetor? int vet[5]; //supondo vet = 1111 vet conteúdo conteúdo conteúdo conteúdo conteúdo

58 Vetores e ponteiros Como funciona o endereçamento de um vetor? int vet[5]; //supondo vet = 1111 int* p = vet; p 1107 endereço 1111 conteúdo vet conteúdo conteúdo conteúdo conteúdo conteúdo

59 Vetores e ponteiros Como funciona o endereçamento de um vetor? int vet[5]; //supondo vet = 1111 int* p = vet; *p = 10; p 1107 endereço 1111 conteúdo vet conteúdo conteúdo conteúdo conteúdo conteúdo

60 Vetores e ponteiros Como funciona o endereçamento de um vetor? int vet[5]; //supondo vet = 1111 int* p = vet; // p = p++; p endereço conteúdo vet conteúdo conteúdo conteúdo conteúdo conteúdo

61 Vetores e ponteiros Como funciona o endereçamento de um vetor? int vet[5]; //supondo vet = 1111 int* p = vet; // p = p++; p *p = 20; endereço conteúdo vet conteúdo conteúdo conteúdo conteúdo conteúdo

62 Vetores e ponteiros Como funciona o endereçamento de um vetor? int vet[5]; //supondo vet = 1111 int* p = vet; // p = p++; p endereço conteúdo vet conteúdo conteúdo conteúdo conteúdo conteúdo

63 Vetores e ponteiros Como funciona o endereçamento de um vetor? int vet[5]; //supondo vet = 1111 int* p = vet; // p = p++; p *p = 30; endereço conteúdo vet conteúdo conteúdo conteúdo conteúdo conteúdo

64 Vetores e ponteiros Como funciona o endereçamento de um vetor? int vet[5]; //supondo vet = 1111 int* p = vet; // p = p++; p endereço conteúdo vet conteúdo conteúdo conteúdo conteúdo conteúdo

65 Vetores e ponteiros Como funciona o endereçamento de um vetor? int vet[5]; //supondo vet = 1111 int* p = vet; // p = p++; p *p = 40; endereço conteúdo vet conteúdo conteúdo conteúdo conteúdo conteúdo

66 Vetores e ponteiros Como funciona o endereçamento de um vetor? int vet[5]; //supondo vet = 1111 int* p = vet; // p = p++; p endereço conteúdo vet conteúdo conteúdo conteúdo conteúdo conteúdo

67 Vetores e ponteiros Como funciona o endereçamento de um vetor? int vet[5]; //supondo vet = 1111 int* p = vet; // p = p++; p *p = 50; endereço conteúdo vet conteúdo conteúdo conteúdo conteúdo conteúdo

68 Vetores e ponteiros Como funciona o endereçamento de um vetor? int vet[5]; //supondo vet = 1111 int* p = vet; // p = p--; p *p = 50; endereço conteúdo vet conteúdo conteúdo conteúdo conteúdo conteúdo

69 Vetores e ponteiros Como funciona o endereçamento de um vetor? int vet[5]; //supondo vet = 1111 int* p = vet; // p = p--; p *p = 50; endereço conteúdo vet conteúdo conteúdo conteúdo conteúdo conteúdo

70 Vetores e ponteiros Como funciona o endereçamento de um vetor? int vet[5]; //supondo vet = 1111 int* p = vet; // p = p--; p *p = 50; endereço conteúdo vet conteúdo conteúdo conteúdo conteúdo conteúdo

71 Vetores e ponteiros Como funciona o endereçamento de um vetor? int vet[5]; //supondo vet = 1111 int* p = vet; // p = p--; p *p = 50; endereço conteúdo vet conteúdo conteúdo conteúdo conteúdo conteúdo

72 Ponteiros como argumentos de funções Como trocar valores entre duas variáveis na função? void troca(int x, int y) { int temp; temp = x; x = y; y = temp; }

73 Ponteiros como argumentos de funções Como trocar valores entre duas variáveis na função? int main() { int a = 4, b = 2; troca(a,b); printf ( %d %d\n,a,b); return 0; } O VALOR NÃO É TROCADO NA MAIN!

74 Ao chamar a função: troca(a,b); Ponteiro Ponteiro Ponteiros como argumentos de funções

75 Ponteiros como argumentos de funções Ao chamar a função: troca(a,b); Na passagem de parâmetros, efetivamente seria como se fizéssemos o seguinte comando: x = a; y = b;

76 Ponteiros como argumentos de funções Ao chamar a função: troca(a,b); Na passagem de parâmetros, efetivamente seria como se fizéssemos o seguinte comando: x = a; y = b; Os valores internos das variáveis a e b após a chamada da função são realmente alterados?

77 Ponteiros como argumentos de funções Este tipo de passagem de parâmetros é comumente chamada de Passagem por Valor

78 Ponteiros como argumentos de funções Como trocar valores entre duas variáveis na função? void troca(int *x, int *y) { int temp; temp = *x; *x = *y; *y = temp; }

79 Ponteiros como argumentos de funções Como trocar valores entre duas variáveis na função? int main() { int a = 4, b = 2; troca(&a,&b); printf ( %d %d\n,a,b); return 0; } O VALOR É TROCADO NA MAIN!

80 Ao chamar a função: troca(&a,&b); Ponteiro Ponteiro Ponteiros como argumentos de funções

81 Ponteiros como argumentos de funções Ao chamar a função: troca(&a,&b); Na passagem de parâmetros, efetivamente seria como se fizéssemos o seguinte comando: x = &a; y = &b;

82 Ponteiros como argumentos de funções Ao chamar a função: troca(&a,&b); Na passagem de parâmetros, efetivamente seria como se fizéssemos o seguinte comando: x = &a; y = &b; Os valores internos das variáveis a e b após a chamada da função são alterados, pois ocorreu a troca de valores referentes às variáveis que possuem os endereços de memória &a e &b.

83 Ponteiros como argumentos de funções Este tipo de passagem de parâmetros é comumente chamada de Passagem por Referência

84 Vetores como argumentos de funções Vetores são passados como parâmetros em funções por referência ou valor? void atribui_valor(int *vet,int tam, int valor) { int i; for (i = 0; i<tam; i++) vet[i] = valor; }

85 Vetores como argumentos de funções Logo, quando fazíamos: void função(int vet[]); para recebermos um vetor passado como argumento, estamos fazendo EXATAMENTE: void função(int *vet); Portanto, em C: vet[] *vet

86 Exemplo 1 Ponteiro Ponteiro Um função que inicializa um vetor: int* inicializavet (int tam){ int i; int vet = malloc(tam*sizeof(int)); for (i=0; i<tam; i++){ *(vet + i) = 0; } return vet; }

87 Exemplo 2 Ponteiro Ponteiro Uma função de leitura de duas variáveis: int leituraxy(int* x, int* y){ printf( Entre com as coordenadas ); scanf( %d %d,x,y); }

88 Exemplo 3 Ponteiro Ponteiro Uma função que compara duas strings: int comparastring(char* str1, char* str2){ char *i,*j; for ( i = str1, j = str2; *i!= '\0' && *j!= '\0' && *i == *j; i++, j++ ); return *i - *j; }

89 Exemplo 4 Ponteiro Ponteiro Uma função que compara duas strings: int comparastring(char* str1, char* str2){ char i; for ( i = 0; str1[i]!='\0' && str2[i]!='\0' && str1[i]==str2[i]; i++ ); return str1[i] str2[i]; }

90 Estruturas e ponteiros Como em qualquer outro tipo de dado, ponteiros para estruturas também podem ser definidos. typedef struct{ int x; int y; }Ponto;

91 Estruturas e ponteiros int main() { Ponto p, *ponteirop; ponteirop = &p; (*ponteirop).x = 1; (*ponteirop).y = 2; return 0; }

92 Estruturas e ponteiros A forma de referenciar o conteúdo da struct apontada pelo ponteiro é sempre da forma: (*ponteiro).atributo sendo que os parenteses são necessários, devido a precedência superior do operador. se comparado com *.

93 Estruturas e ponteiros Acessar uma struct apontada por um ponteiro para muitos pode parecer confusa. É muito comum errar os parenteses necessários para garantir a precedência dos operadores. e *.

94 Estruturas e ponteiros Acessar uma struct apontada por um ponteiro para muitos pode parecer confusa. É muito comum errar os parenteses necessários para garantir a precedência dos operadores. e *. Pensando nisso, os projetistas de C definiram um operador adicional denominado operador seta ( -> ), com a missão de facilitar o acesso aos membros de uma struct.

95 Dessa forma, Ponteiro Ponteiro Estruturas e ponteiros (*p).atr; p->atr;

96 Alocação Dinâmica de Memória Objetivos: Utilizar espaços da memória de tamanho arbitrário; Criar estruturas de dados usando encadeamento; É a base do conceito da alocação por demanda, dinâmica.

97 Alocação Dinâmica de Memória Motivação: Alocação de espaço sob demanda: Muitas vezes o espaço de memória necessário para um conjunto de dados varia durante a execução do programa. Dessa forma, a alocação dinâmica permite que quando for preciso utilizar algum recurso de memória, este seria alocado enquanto o programa estivesse em execução.

98 Alocação Dinâmica de Memória Funções para alocação dinâmica: Funções principais: - malloc() Aloca um espaço na memória e retorna um ponteiro para o espaço alocado - free() - Libera espaço alocado na memória para que possa ser utilizados por outras aplicações ou por outras chamadas de malloc().

99 Alocação Dinâmica de Memória Exemplo 1 Alocação Estática int main() { int vet[100]; int n; scanf( %d,&n); //alocação estática em tempo de execução int vet2[n]; return 0; }

100 Alocação Dinâmica de Memória Exemplo 2 Alocação Dinâmica int main() { int *vet1 = malloc(100*sizeof(int)); int n; scanf( %d,&n); int *vet2 = malloc(n*sizeof(int)); return 0; }

101 Alocação Dinâmica de Memória Exemplo 3 Alocando string dinamicamente int main() { char* vet = malloc(100*sizeof(char)); scanf( %s,vet); }

102 Alocação Dinâmica de Memória Liberando espaços com free(): Sempre que um espaço alocado fica sem referência este é perdido, não podendo ser utilizado novamente (memory leak). Antes de fazer um apontador apontar para outro espaço, ou quando o espaço não for mais utilizado, a área de memória que este aponta deve ser liberada com free: a = malloc(10*sizeof(int));... free(a); // O espaço de memória alocado dinâmicamente foi liberado!

103

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

Estruturas de Dados. Introdução Definição de Ponteiros Declaração de Ponteiros em C Manipulação de Ponteiros em C Estruturas de Dados Revisão de Ponteiros Prof. Ricardo J. G. B. Campello Sumário Introdução Definição de Ponteiros Declaração de Ponteiros em C Manipulação de Ponteiros em C Operações Ponteiros e Arranjos

Leia mais

Objetivo. Compreender a definição e dominar a implementação de ponteiros em C. Dominar a manipulação de arquivos

Objetivo. Compreender a definição e dominar a implementação de ponteiros em C. Dominar a manipulação de arquivos Objetivo Compreender a definição e dominar a implementação de ponteiros em C. Dominar a manipulação de arquivos Motivação para a utilização de ponteiros O que precisamos para fazer para que uma função

Leia mais

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

Ponteiros e Alocação Dinâmica. Prof. Péricles Miranda Ponteiros e Alocação Dinâmica Prof. Péricles Miranda pbcm@cin.ufpe.br Memória A memória é formada por várias células. Cada célula contém um endereço e um valor. Memória Endereço Ao declararmos uma variável

Leia mais

Programação I Ponteiros e alocação dinâmica de memória. Prof. Carlos Alberto

Programação I Ponteiros e alocação dinâmica de memória. Prof. Carlos Alberto Programação I Ponteiros e alocação dinâmica de memória Prof. Carlos Alberto carlos.batista@facape.br carlos36_batista@yahoo.com.br Ponteiros O ponteiro é um tipo de dado como int, char ou float; Variáveis

Leia mais

Linguagem C Ponteiros

Linguagem C Ponteiros Linguagem C Ponteiros Instituto Federal de Educação, Ciência e Tecnologia do Triângulo Mineiro Prof. Edwar Saliba Júnior Janeiro de 2018 Unidade 14 Linguagem C - Ponteiros 1/24 Identificadores e Endereços

Leia mais

Programação Estruturada

Programação Estruturada Programação Estruturada Ponteiros Parte 1 Professores Emílio Francesquini e Carla Negri Lintzmayer 2018.Q3 Centro de Matemática, Computação e Cognição Universidade Federal do ABC Ponteiros Ponteiro Ponteiros

Leia mais

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

Ponteiros - Parte I. Ponteiros, Ponteiros e Vetores, Algoritmo Bubble Sort, Alocação Dinâmica de Memória Ponteiros - Parte I Ponteiros, Ponteiros e Vetores, Algoritmo Bubble Sort, Alocação Dinâmica de Memória Ponteiros Um ponteiro é uma variável que contém um endereço de memória. Esse endereço é normalmente

Leia mais

Universidade Federal de Uberlândia Faculdade de Computação. Linguagem C: ponteiros e alocação dinâmica

Universidade Federal de Uberlândia Faculdade de Computação. Linguagem C: ponteiros e alocação dinâmica Universidade Federal de Uberlândia Faculdade de Computação Linguagem C: ponteiros e alocação dinâmica Prof. Renato Pimentel 1 Ponteiros 2 Prof. Renato Pimentel 1 Ponteiros: introdução Toda a informação

Leia mais

Ponteiros e Alocação de Memória

Ponteiros e Alocação de Memória Algoritmos e Estrutura de Dados I Ponteiros e Alocação de Memória Prof. Paulo Henrique Pisani fevereiro/2019 Memória Podemos entender a memória como um grande vetor de bytes devidamente endereçados: 0x1051

Leia mais

Princípios de Desenvolvimento de Algoritmos MAC122

Princípios de Desenvolvimento de Algoritmos MAC122 Princípios de Desenvolvimento de Algoritmos MAC122 Prof. Dr. Paulo Miranda IME-USP Alocação Dinâmica de Memória Motivação: Nossos programas pré-fixavam o número de variáveis a serem utilizadas. No caso

Leia mais

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

Introdução a Programação. Ponteiros e Strings, Alocação Dinâmica Introdução a Programação Ponteiros e Strings, Alocação Dinâmica Tópicos da Aula Hoje aprenderemos a relação entre ponteiros e strings Ponteiros para strings X Vetores de Caracteres Vetores de ponteiros

Leia mais

Programação de Computadores II

Programação de Computadores II Programação de Computadores II Slides cedidos por Karina Mochetti 2018.1 Exercício Aula Passada Faça uma função que recebe uma matriz n m representada por ponteiros e desaloque toda a memória usada por

Leia mais

ponteiros INF Programação I Prof. Roberto Azevedo

ponteiros INF Programação I Prof. Roberto Azevedo ponteiros INF1005 -- Programação I -- 2016.1 Prof. Roberto Azevedo razevedo@inf.puc-rio.br ponteiros tópicos o que são ponteiros operadores usados com ponteiros passagem de ponteiros para funções referência

Leia mais

Ponteiros. prof. Fabrício Olivetti de França

Ponteiros. prof. Fabrício Olivetti de França Ponteiros prof. Fabrício Olivetti de França Anteriormente em prog. estrut. Vimos que as variáveis representando arrays em C armazenam apenas um apontador para o endereço de memória contendo os valores

Leia mais

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

A sintaxe para se declarar uma variável do tipo ponteiro é dada por: Pense duas vezes e faça uma vez. Provérbio Chinês. PONTEIROS Um ponteiro nada mais é que uma variável capaz de armazenar um número hexadecimal que corresponde a um endereço de memória de outra variável.

Leia mais

Introdução a Programação. Tipos Estruturados de Dados

Introdução a Programação. Tipos Estruturados de Dados Introdução a Programação Tipos Estruturados de Dados Tópicos da Aula Hoje aprenderemos a trabalhar com tipos de dados mais complexos Tipos Primitivos x Tipos Estruturados Conceito de Tipos Estruturados

Leia mais

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

Ponteiros. Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista Ponteiros SCC0202 - Algoritmos e Estruturas de Dados I Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista http://www.icmc.usp.br/~paulovic paulovic@icmc.usp.br Instituto de Ciências

Leia mais

Algoritmos e Estruturas de dados

Algoritmos e Estruturas de dados Algoritmos e Estruturas de dados Listas Encadeadas Prof. Dr. Fábio Rodrigues de la Rocha (Listas Encadeadas) 1 / 21 Definição: Anteriormente estudamos listas encadeadas que foram implementadas como vetores

Leia mais

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

Ponteiros & tabelas (cont.) K&R: Capítulo 5 Ponteiros & tabelas (cont.) K&R: Capítulo 5 Sinopse da aula de hoje Pointers in a nutshell & alocação dinâmica de memória Estruturas, funções e apontadores Estruturas auto-referenciadas Exemplo de aplicação:

Leia mais

Programação de Computadores II

Programação de Computadores II Programação de Computadores II 2019.1 Endereço e Ponteiro Endereço Ao colocarmos o símbolo & temos o endereço daquela variável. Ponteiro Ao colocarmos o símbolo * temos o valor da variável armazenada num

Leia mais

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

Introdução a Programação. Ponteiros e Vetores, Alocação Dinâmica Introdução a Programação Ponteiros e Vetores, Alocação Dinâmica Tópicos da Aula Hoje aprenderemos que existe uma forte relação entre ponteiros e vetores Associação entre ponteiros e vetores Ponteiros constantes

Leia mais

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

Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP. 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 Estática x Dinâmica C: dois tipos de alocação de memória: Estática e Dinâmica Na alocação estática, o espaço

Leia mais

Estrutura de dados 2. Ponteiro. Prof. Jesuliana N. Ulysses

Estrutura de dados 2. Ponteiro. Prof. Jesuliana N. Ulysses 1 3 Estrutura de dados 2 Ponteiro Ponteiro 2 O ponteiro é um tipo de dado como int, char ou float. A diferença do ponteiro ponteiro guardará um endereço de memória. Por meio deste endereço pode-se acessar

Leia mais

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

Ponteiros e alocação dinâmica de memória. Disciplina de Programação de Computadores I Universidade Federal de Ouro Preto Ponteiros e alocação dinâmica de memória Disciplina de Programação de Computadores I Universidade Federal de Ouro Preto Agenda Ponteiros Ponteiros e vetores Passagem por cópia e por referência Alocação

Leia mais

Essencialmente, um ponteiro nada mais é do que uma variável que ao invés de conter um valor, contém um endereço de memória.

Essencialmente, um ponteiro nada mais é do que uma variável que ao invés de conter um valor, contém um endereço de memória. Ponteiros e Arrays Ponteiros são fundamentais para a programação bem sucedida em C: Passagem de parâmetros por referência; Alocação dinâmica de memória; Aumentar a eficiência de certar rotinas. Essencialmente,

Leia mais

Aula 25: Alocação Dinâmica

Aula 25: Alocação Dinâmica Aula 25: Alocação Dinâmica Introdução a Programação Túlio Toffolo & Puca Huachi http://www.toffolo.com.br BCC201 2019/1 Departamento de Computação UFOP Aulas anteriores Estruturas de memórias heterogêneas

Leia mais

Métodos Computacionais. Vetores e Matrizes Dinâmicas

Métodos Computacionais. Vetores e Matrizes Dinâmicas Métodos Computacionais Vetores e Matrizes Dinâmicas Vetores Um programa para o cálculo da média Média m n i= = 1 n x i Variância v n i= = 1 ( x i n m) 2 A forma mais simples de estruturar um conjunto de

Leia mais

Linguagem C. Ponteiros. Alex Vidigal Bastos.

Linguagem C. Ponteiros. Alex Vidigal Bastos. Linguagem C Ponteiros Alex Vidigal Bastos alexvbh@gmail.com Ponteiros Ponteiros são variáveis que contém endereços. Estas variáveis apontam para algum determinado endereço da memória. Em geral, o ponteiro

Leia mais

BCC202 - Estrutura de Dados I

BCC202 - Estrutura de Dados I BCC202 - Estrutura de Dados I Aula 02: Alocação Dinâmica de Memória Reinaldo Fortes Universidade Federal de Ouro Preto, UFOP Departamento de Ciência da Computação, DECOM Website: www.decom.ufop.br/reifortes

Leia mais

CES-11. Algoritmos e Estruturas de Dados. Carlos Alberto Alonso Sanches Juliana de Melo Bezerra

CES-11. Algoritmos e Estruturas de Dados. Carlos Alberto Alonso Sanches Juliana de Melo Bezerra CES-11 Algoritmos e Estruturas de Dados Carlos Alberto Alonso Sanches Juliana de Melo Bezerra CES-11 Revisão Tipos escalares primitivos Tipos constituídos de uma linguagem Ponteiros Alocação estática versus

Leia mais

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

Introdução a Programação. Ponteiros para Estruturas, Outros Tipos de Estruturas Introdução a Programação Ponteiros para Estruturas, Outros Tipos de Estruturas Tópicos da Aula Hoje aprenderemos a trabalhar com ponteiros para estruturas Ponteiros para estruturas Alocação dinâmica de

Leia mais

Tipos Abstratos de Dados. Estrutura de Dados

Tipos Abstratos de Dados. Estrutura de Dados Tipos Abstratos de Dados Tipo Abstrato de Dados ou TAD Idéia principal: desvincular o tipo de dado (valores e operações) de sua implementação: O que o tipo faz e não como ele faz! Vantagens da desvinculação:

Leia mais

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

Ponteiros e Tabelas. K&R: Capítulo 5 Ponteiros e Tabelas K&R: Capítulo 5 Ponteiros e Tabelas Ponteiros e endereços Ponteiros e argumentos de funções Ponteiros e tabelas Alocação dinâmica de memória Aritmética de ponteiros Tabelas de ponteiros

Leia mais

Ponteiros, ponteiros e vetores e alocação dinâmica de memória

Ponteiros, ponteiros e vetores e alocação dinâmica de memória Ponteiros Ponteiros ou apontadores (em inglês pointers) são variáveis cujo conteúdo é um endereço. Já vimos que variáveis são posições na memória que podem conter um determinado valor dependendo de seu

Leia mais

Vetores e Matrizes. Prof. Fabrício Olivetti de França Charles Henrique

Vetores e Matrizes. Prof. Fabrício Olivetti de França Charles Henrique Vetores e Matrizes Prof. Fabrício Olivetti de França Charles Henrique Vetores Estáticos Um vetor em C é declarado como: tipo nome[tamanho]; 2 Vetores Estáticos /* vetor de nome v1 com 100 elementos do

Leia mais

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

Alocação Dinâmica. Túlio Toffolo  BCC202 Aula 02 Algoritmos e Estruturas de Dados I Alocação Dinâmica Túlio Toffolo tulio@toffolo.com.br www.toffolo.com.br BCC202 Aula 02 Algoritmos e Estruturas de Dados I Esquema de Memória baixa Código do Programa Variáveis Globais e Estáticas Memória

Leia mais

Sumário. Introdução à Ciência da Computação. Ponteiros em C. Introdução. Definição. Por quê ponteiros são importantes?

Sumário. Introdução à Ciência da Computação. Ponteiros em C. Introdução. Definição. Por quê ponteiros são importantes? Introdução à Ciência da Computação Ponteiros em C Prof. Ricardo J. G. B. Campello Sumário Introdução Definição de Ponteiros Declaração de Ponteiros em C Manipulação de Ponteiros em C Operações Ponteiros

Leia mais

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

Estruturas de Dados Aulas 3 e 4: Uso da memória e Vetores Estruturas de Dados Aulas 3 e 4: Uso da memória e Vetores Uso da memória Existem 3 maneiras de reservar o espaço da memória: Variáveis globais (estáticas) Espaço existe enquanto programa estiver executando

Leia mais

Ponteiros. Baseado nos slides do Prof. Mauro.

Ponteiros. Baseado nos slides do Prof. Mauro. Baseado nos slides do Prof. Mauro. A memória do computador é uma sequência de bytes, na qual endereçamos cada um sequencialmente. Como vimos, uma variável é uma região da memória que reservamos para armazenar

Leia mais

Alocação Dinâmica de Memória

Alocação Dinâmica de Memória Alocação Dinâmica de Memória Luiz Chaimowicz, Raquel O. Prates, Pedro O.S. Vaz de Melo Algoritmos e Estruturas de Dados II DCC UFMG Alocação Estática x Dinâmica C: dois tipos de alocação de memória: Estática

Leia mais

Linguagem C: Ponteiros. Prof. Tiago Alves de Oliveira

Linguagem C: Ponteiros. Prof. Tiago Alves de Oliveira Linguagem C: Ponteiros 1 Sumário Ponteiros; Variáveis ponteiros; Operadores de ponteiros; Expressões com ponteiros; Atribuição de ponteiros; Aritmética de ponteiros; Comparação de ponteiros; Ponteiros

Leia mais

DAS5102 Fundamentos da Estrutura da Informação

DAS5102 Fundamentos da Estrutura da Informação Ponteiros e Funções Funções ou sub-rotinas são parcelas de código que podem ser invocadas a partir do programa principal ou até mesmo por outras sub-rotinas. Elas têm como objetivo a execução de uma tarefa

Leia mais

Linguagem C: Ponteiros. Prof. Leonardo Barreto Campos 1

Linguagem C: Ponteiros. Prof. Leonardo Barreto Campos 1 Linguagem C: Ponteiros Prof. Leonardo Barreto Campos 1 Sumário Ponteiros; Variáveis ponteiros; Operadores de ponteiros; Expressões com ponteiros; Atribuição de ponteiros; Aritmética de ponteiros; Comparação

Leia mais

1. Revisão de Vetores, Ponteiros, Funções e Estruturas em C

1. Revisão de Vetores, Ponteiros, Funções e Estruturas em C Introdução à Computação II 5952011 1. Revisão de Vetores, Ponteiros, Funções e Estruturas em C Prof. Renato Tinós Local: Depto. de Computação e Matemática (FFCLRP/USP) 1 Principais Tópicos 1.1. Revisão

Leia mais

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

Introdução à Ciência da Computação I. Alocação Dinâmica. Prof. Claudio Fabiano Motta Toledo Introdução à Ciência da Computação I Alocação Dinâmica Prof. Claudio Fabiano Motta Toledo Sumário Funções para alocação de memória Ponteiros para ponteiros 8/12/16 2 Funções para alocação de memória malloc(),

Leia mais

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

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 Exercícios 1) Crie uma função que recebe os coeficientes de uma função do 2o. grau e retorna as raízes sem usar vetor. 2) Faça um programa que acha o maior e o menor inteiro dentro de um vetor de 10 inteiros,

Leia mais

Programação de Computadores II. Cap. 5 Vetores

Programação de Computadores II. Cap. 5 Vetores Programação de Computadores II Cap. 5 Vetores Livro: Waldemar Celes, Renato Cerqueira, José Lucas Rangel. Introdução a Estruturas de Dados, Editora Campus (2004) Slides adaptados dos originais dos profs.:

Leia mais

ALGORITMOS E ESRUTRA DE DADOS I. Ponteiros Passagem por Valor e Referência Alocação de Memória

ALGORITMOS E ESRUTRA DE DADOS I. Ponteiros Passagem por Valor e Referência Alocação de Memória ALGORITMOS E ESRUTRA DE DADOS I Ponteiros Passagem por Valor e Referência Alocação de Memória 2 Agenda Ponteiros Conceitos gerais O que é Ponteiro? Declaração de Ponteiros Operadores para Ponteiros Exemplos

Leia mais

Estruturas de Dados Aulas 3 e 4: Uso da. 14/03/2011 e 16/03/2011

Estruturas de Dados Aulas 3 e 4: Uso da. 14/03/2011 e 16/03/2011 Estruturas de Dados Aulas 3 e 4: Uso da memória e Vetores 14/03/2011 e 16/03/2011 Uso da memória Existem 3 maneiras de reservar o espaço da memória: Variáveis globais (estáticas) Espaço existe enquanto

Leia mais

Métodos Computacionais. Tipos Estruturados

Métodos Computacionais. Tipos Estruturados Métodos Computacionais Tipos Estruturados Tipos Estruturados C oferece tipos primitivos que servem para representar valores simples Reais (float, double), inteiros (int), caracter (char) C oferece também

Leia mais

Aula 24 Ponteiros, vetores e structs

Aula 24 Ponteiros, vetores e structs Programação Aula 24 Ponteiros, vetores e structs Prof. Laura Silva de Assis Engenharia de Computação 2 o Período CEFET/RJ - Centro Federal de Educação Tecnológica Celso Suckow da Fonseca UnED Petrópolis

Leia mais

Computação 2. Aula 7. Profª. Fabiany Ponteiros

Computação 2. Aula 7. Profª. Fabiany Ponteiros Computação 2 Aula 7 Ponteiros Profª. Fabiany fabianyl@utfpr.edu.br O que são Ponteiros? Um ponteiro é uma variável que contém um endereço de memória. Este endereço é normalmente a posição de uma outra

Leia mais

Módulo 5 Vetores e Alocação Dinâmica

Módulo 5 Vetores e Alocação Dinâmica Estruturas de Dados Módulo 5 Vetores e Alocação Dinâmica 1/9/2005 (c) Dept. Informática - PUC-Rio 1 Referências Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução a Estruturas de Dados, Editora

Leia mais

REVISÃO DE C. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

REVISÃO DE C. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos REVISÃO DE C Vanessa Braganholo Estruturas de Dados e Seus Algoritmos REVISÃO DE C Ponteiros Alocação dinâmica de memória Recursão INSTITUTO DE COMPUTAÇÃO - UFF 2 PONTEIROS PONTEIROS C permite o armazenamento

Leia mais

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

Aula 17: Ponteiros e Alocação Dinâmica em C Aula 17: Ponteiros e Alocação Dinâmica em C Fernanda Passos Universidade Federal Fluminense Programação de Computadores IV Fernanda Passos (UFF) Ponteiros e Alocação Dinâmica Programação de Computadores

Leia mais

Alocação Dinâmica de Memória

Alocação Dinâmica de Memória Alocação Dinâmica de Memória Elerson R. S. Santos elerson@dcc.ufmg.br Algoritmos e Estruturas de DCC UFMG Variáveis Uma variável representa um nome simbólico para uma posição de memória. Cada posição de

Leia mais

Módulo 8 Tipos Estruturados

Módulo 8 Tipos Estruturados Estruturas de Dados Módulo 8 Tipos Estruturados 9/8/2005 (c) Dept. Informática - PUC-Rio 1 Referências Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução a Estruturas de Dados, Editora Campus

Leia mais

Ponteiros. Introdução

Ponteiros. Introdução Ponteiros Introdução Conceito Um PONTEIRO ou APONTADOR é uma variável usada para armazenar um endereço de memória. Normalmente, o endereço armazenado em um PONTEIRO é a posição de uma outra variável na

Leia mais

Reinaldo Gomes Alocação Dinâmica

Reinaldo Gomes Alocação Dinâmica Algoritmos e Lógica de Programação Linguagem C Alocação Dinâmica i de Memória Reinaldo Gomes reinaldo@cefet-al.br Alocação Dinâmica Quando declaramos uma variável ou um arranjo, o compilador automaticamente

Leia mais

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

O que é um apontador em C (type pointer in C)? O que é um apontador em C (type pointer in C)? Um apontador é uma variável que contém um endereço de outra variável. int x = 10;//variável inteira iniciada com o valor 10 int *px = &x;//variável apontadora

Leia mais

Ponteiros e Alocação Dinâmica em C. Fonte: DCC UFMT (modificado)

Ponteiros e Alocação Dinâmica em C. Fonte: DCC UFMT (modificado) Ponteiros e Alocação Dinâmica em C Fonte: DCC UFMT (modificado) Definições Variáveis : endereçam uma posição de memória que contem um determinado valor dependendo do seu tipo (char, int, float, double,...)

Leia mais

Centro Universitário Franciscano Curso de Sistemas de Informação Disciplina de algoritmos e programação II. Ponteiros

Centro Universitário Franciscano Curso de Sistemas de Informação Disciplina de algoritmos e programação II. Ponteiros Centro Universitário Franciscano Curso de Sistemas de Informação Disciplina de algoritmos e programação II Ponteiros Profa.: Simone Ceolin Slides (Prof.Tiago Rios da Rocha) Primeiro Semestre 2011 Sumário

Leia mais

PONTEIROS E LISTAS. Kalinka Regina Lucas Jaquie Castelo Branco

PONTEIROS E LISTAS. Kalinka Regina Lucas Jaquie Castelo Branco PONTEIROS E LISTAS Kalinka Regina Lucas Jaquie Castelo Branco kalinka@icmc.usp.br ALOCAÇÃO DINÂMICA DE MEMÓRIA Pode-se assumir que as variáveis declaradas na cláusula variável do pseudo-código do algoritmo

Leia mais

Alocação Dinâmica em C

Alocação Dinâmica em C Universidade de São Paulo São Carlos Instituto de Ciências Matemáticas e de Computação Alocação Dinâmica em C Profa Rosana Braga Adaptado de material preparado pela profa Silvana Maria Affonso de Lara

Leia mais

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

Linguagem C: Ponteiros - Alocação Dinâmica Prof. Paulo R. S. L. Coelho paulo@facom.ufu.br Faculdade de Computação Universidade Federal de Uberlândia GEQ007 Organização 1 Ponteiros Alocação Dinâmica de Memória 2 3 4 Organização Ponteiros Alocação

Leia mais

Introdução à Computação

Introdução à Computação Introdução à Computação Linguagem C Professor: André de Carvalho Aula de hoje Introdução Tipos compostos Tipo enumeração Conclusão Tipos compostos A Linguagem C permite criar tipos de dados definíveis

Leia mais

Aula 20 - Ponteiros. Prof. Laura Silva de Assis. Engenharia de Computação. CEFET/RJ - Centro Federal de Educação Tecnológica Celso Suckow da Fonseca

Aula 20 - Ponteiros. Prof. Laura Silva de Assis. Engenharia de Computação. CEFET/RJ - Centro Federal de Educação Tecnológica Celso Suckow da Fonseca Programação Aula 20 - Ponteiros Prof. Laura Silva de Assis Engenharia de Computação 2 o Período CEFET/RJ - Centro Federal de Educação Tecnológica Celso Suckow da Fonseca UnED Petrópolis 2 o semestre -

Leia mais

Introdução a Programação. Ponteiros e Passagem de Argumentos por Referência

Introdução a Programação. Ponteiros e Passagem de Argumentos por Referência Introdução a Programação Ponteiros e Passagem de Argumentos por Referência Tópicos da Aula Hoje aprenderemos a manipular endereços de memória ou ponteiros Variáveis e Endereços Conceito de Ponteiro Operadores

Leia mais

Aula 23: Ponteiros Introdução a Programação Túlio Toffolo & Puca Huachi

Aula 23: Ponteiros Introdução a Programação Túlio Toffolo & Puca Huachi Aula 23: Ponteiros Introdução a Programação Túlio Toffolo & Puca Huachi http://www.toffolo.com.br BCC201 2018/2 Baseado nos slides do Prof. Guillermo Cámara-Chávez Aulas anteriores Vetores Matrizes Cadeias

Leia mais

Programação Computacional Aula 16: Alocação Dinâmica de Memória

Programação Computacional Aula 16: Alocação Dinâmica de Memória Programação Computacional Aula 16: Alocação Dinâmica de Memória Profa. Madeleine Medrano madeleine@icte.uftm.edu.br Definição Sempre que escrevemos um programa, é preciso reservar espaço para as informações

Leia mais

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

Alocação Dinâmica de Memória. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR Alocação Dinâmica de Memória David Menotti Algoritmos e Estruturas de Dados II DInf UFPR Alocação Estática x Dinâmica C: dois tipos de alocação de memória: Estática e Dinâmica Na alocação estática, o espaço

Leia mais

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.

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. Logo Aula 06 Ponteiros 2 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. Um exemplo clássico disto

Leia mais

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

Aula 24: Ponteiros e Alocação Dinâmica Aula 24: Ponteiros e Alocação Dinâmica Introdução a Programação Túlio Toffolo & Puca Huachi http://www.toffolo.com.br BCC201 2018/2 Departamento de Computação UFOP Aula anterior Memória Ponteiro Utilização

Leia mais

Linguagem C: Introdução

Linguagem C: Introdução Linguagem C: Introdução Linguagem C É uma Linguagem de programação genérica que é utilizada para a criação de programas diversos como: Processadores de texto Planilhas eletrônicas Sistemas operacionais

Leia mais

Linguagem C ponteiros

Linguagem C ponteiros Linguagem C ponteiros IF61A/IF71A - Computação 1 Prof. Leonelo Almeida Universidade Tecnológica Federal do Paraná Até agora... Introdução à linguagem C... Vetores Matrizes Funções Recursão Registros Aula

Leia mais

3. Linguagem de Programação C

3. Linguagem de Programação C Introdução à Computação I IBM1006 3. Linguagem de Programação C Prof. Renato Tinós Departamento de Computação e Matemática (FFCLRP/USP) 1 Principais Tópicos 3.6. Ponteiros 3.6.1. Introdução 3.6.2. Uso

Leia mais

Programação II. Vetores e Alocação Dinâmica. Bruno Feijó Dept. de Informática, PUC-Rio

Programação II. Vetores e Alocação Dinâmica. Bruno Feijó Dept. de Informática, PUC-Rio Programação II Vetores e Alocação Dinâmica Bruno Feijó Dept. de Informática, PUC-Rio Vetores (arrays) Vetor: estrutura de dados definindo um conjunto enumerável Exemplo: v = vetor de inteiros com 10 elementos

Leia mais

Ponteiros. Ponteiros. Ponteiros. Ponteiros. Ponteiros. Introdução a Programação. Profa. Roseli Romero

Ponteiros. Ponteiros. Ponteiros. Ponteiros. Ponteiros. Introdução a Programação. Profa. Roseli Romero ICMC USP 1.semestre/2009 Introdução a Programação e vetores em C Profa. Roseli Romero um é uma variável que contém o endereço um dado declaração: * indica que a variável é um tipo_dado *nome_; int x; int

Leia mais

ALGORITMOS E ESTRUTURAS DE DADOS CES-11

ALGORITMOS E ESTRUTURAS DE DADOS CES-11 ALGORITMOS E ESTRUTURAS DE DADOS CES-11 Prof. Paulo André Castro pauloac@ita.br Sala 110 Prédio da Computação www.comp.ita.br/~pauloac IECE - ITA Revisão CES-11 Tipos escalares primitivos Tipos constituídos

Leia mais

INF1007: Programação 2. 4 Tipos Estruturados. 10/23/09 (c) Dept. Informática - PUC-Rio 1

INF1007: Programação 2. 4 Tipos Estruturados. 10/23/09 (c) Dept. Informática - PUC-Rio 1 INF1007: Programação 2 4 Tipos Estruturados 10/23/09 (c) Dept. Informática - PUC-Rio 1 Tópicos Principais Tipo estrutura Definição de novos tipos Aninhamento de estruturas Vetores de estruturas Vetores

Leia mais

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

Ponteiros e Tabelas. K&R: Capitulo 5 IAED, 2012/2013 Ponteiros e Tabelas K&R: Capitulo 5 Ponteiros e Tabelas Ponteiros e endereços Ponteiros e argumentos de funções Ponteiros e tabelas Alocação dinâmica de memória Aritmética de ponteiros Tabelas de ponteiros

Leia mais

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

Ponteiros e Tabelas. K&R: Capitulo 5 IAED, 2012/2013 Ponteiros e Tabelas K&R: Capitulo 5 Ponteiros e Tabelas Ponteiros e endereços Ponteiros e argumentos de funções Ponteiros e tabelas Alocação dinâmica de memória Aritmética de ponteiros Tabelas de ponteiros

Leia mais

Computadores Digitais 2. Prof. Rodrigo de Souza Couto

Computadores Digitais 2. Prof. Rodrigo de Souza Couto Computadores Digitais 2 Linguagens de Programação DEL-Poli/UFRJ Prof. Miguel Campista Aula de Hoje Tipos Estruturados Tipo estrutura Definição de novos tipos Aninhamento de Estruturas Vetores de estruturas

Leia mais

Estrutura de dados 1. Ponteiros

Estrutura de dados 1. Ponteiros Estrutura de dados 1 Ponteiros Ponteiros Um ponteiro é um endereço de memória O valor de um ponteiro indica onde uma variável está armazenada Um ponteiro proporciona um modo de acesso a uma variável sem

Leia mais

Mais sobre Ponteiros em C

Mais sobre Ponteiros em C Universidade de São Paulo São Carlos Instituto de Ciências Matemáticas e de Computação Mais sobre Ponteiros em C Material preparado pela profa Silvana Maria Affonso de Lara 2º semestre de 2010 ROTEIRO

Leia mais

1 Exercícios com ponteiros

1 Exercícios com ponteiros Computação para Informática - Prof. Adriano Joaquim de Oliveira Cruz Oitava Aula Prática - 29 de outubro de 2010 O objetivo desta aula prática é exercitar ponteiros e funções. 1 Exercícios com ponteiros

Leia mais

Ponteiros. um ponteiro é uma variável que contém o endereço um dado declaração: * indica que a variável é um ponteiro. Ex: tipo_dado *nome_ponteiro;

Ponteiros. um ponteiro é uma variável que contém o endereço um dado declaração: * indica que a variável é um ponteiro. Ex: tipo_dado *nome_ponteiro; Ponteiros um ponteiro é uma variável que contém o endereço um dado declaração: * indica que a variável é um ponteiro Ex: tipo_dado *nome_ponteiro; /* compilador sabe que pi é ponteiro */ /* pi é um ponteiro

Leia mais

Alocação de Memória. Lucas Ferrari de Oliveira Professor Adjunto Universidade Federal do Paraná (UFPR)

Alocação de Memória. Lucas Ferrari de Oliveira Professor Adjunto Universidade Federal do Paraná (UFPR) Alocação de Memória Linguagem de Programação Estruturada 1 Alocação dinâmica e ponteiros Lucas Ferrari de Oliveira Professor Adjunto Universidade Federal do Paraná (UFPR) Sumario Introdução Alocação Estática

Leia mais

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

Ponteiros em C. Prof. Rui Jorge Tramontin Jr. UDESC - Rui J. Tramontin Jr. 1 Ponteiros em C Prof. Rui Jorge Tramontin Jr. UDESC - Rui J. Tramontin Jr. 1 Índice Introdução Operações sobre Ponteiros Exemplos Ponteiros e Funções Alocação Dinâmica em C UDESC - Rui J. Tramontin Jr.

Leia mais

Linguagem de Programação C. Ponteiros

Linguagem de Programação C. Ponteiros Cristiano Lehrer Conceitos Básicos (1/3) char ch; RAM 100 101 102... 5000 5001 5002... ch ch = 'A'; RAM ch A 100 101 102... 5000 5001 5002... char *; RAM ch A 100 101 102... 5000 5001 5002... = &ch; ch

Leia mais

Estruturas de Dados. Profa. Juliana Pinheiro Campos

Estruturas de Dados. Profa. Juliana Pinheiro Campos Estruturas de Dados Profa. Juliana Pinheiro Campos Vetores Forma mais simples de estruturar um conjunto de dados. Exemplo: int p[10]; // vetor de inteiros com 10 elementos Reserva de um espaço de memória

Leia mais

11a. Aula Ponteiros e Vetores

11a. Aula Ponteiros e Vetores 11a. Aula Ponteiros e Vetores 2013.2 2 É um tipo de variável com uma ressalva...... armazena apenasendereçode memória (ou null) Se eu tiver o endereço da casa de Francisca, eu poderei visitá-la e lhe fazer

Leia mais

10. - ESTRUTURAS Características Básicas

10. - ESTRUTURAS Características Básicas 102102102102102102102102102102102102102102102102102102 10. - ESTRUTURAS 10.1 - Características Básicas Coleção de uma ou mais variáveis que podem ser de diferentes tipos, agrupadas sob um mesmo nome. Também

Leia mais

Programação II. Vetores e Alocação Dinâmica. Bruno Feijó Dept. de Informática, PUC-Rio

Programação II. Vetores e Alocação Dinâmica. Bruno Feijó Dept. de Informática, PUC-Rio Programação II Vetores e Alocação Dinâmica Bruno Feijó Dept. de Informática, PUC-Rio Vetores (arrays) Vetor: estrutura de dados definindo um conjunto enumerável Exemplo: v = vetor de inteiros com 10 elementos

Leia mais

Professora Jeane Melo

Professora Jeane Melo Professora Jeane Melo Roteiro Lista Encadeada Alocação: Estática x Dinâmica O que são Ponteiros? Ponteiros Variáveis que Armazenam Endereços de Memória Mas, toda variável não é armazenada na memória? Ponteiros

Leia mais

Linguagem C Apontadores. Endereços e apontadores Passagem de parâmetros para funções Apontadores e vectores Memória dinâmica

Linguagem C Apontadores. Endereços e apontadores Passagem de parâmetros para funções Apontadores e vectores Memória dinâmica Linguagem C Apontadores Endereços e apontadores Passagem de parâmetros para funções Apontadores e vectores Memória dinâmica Endereços de Memória Podemos considerar a memória como um vector M, em que cada

Leia mais

Estruturas Dinâmicas - Ponteiros

Estruturas Dinâmicas - Ponteiros SSC0800 - ICC1 Teórica Introdução à Ciência da Computação I Estruturas Dinâmicas - Ponteiros Prof. Claudio Fabiano Motta Toledo: claudio@icmc.usp.br Sumário Ponteiros Ponteiros e Vetores Funções para alocação

Leia mais

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

Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP. 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 Estática x Dinâmica C: dois tipos de alocação de memória: Estática e Dinâmica Na alocação estática, o espaço

Leia mais