Buscar

0 funcoes ponteiros vetores matrizes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 3 páginas

Prévia do material em texto

Estrutura de Dados
00 - Funções, ponteiros e alocação dinâmica
Manoel Vilela
<2017-08-21 Mon 14:00>
Sumário
1 Resumo 1
2 Tipos de alocações de Matrizes 2
1 Resumo
Nesta aula deu-se uma introdução de vários conceitos básicos para a disci-
plina de estrutura de dados. Dentre eles, sobre especificamente a linguagem
C, foi abordada de maneira sucinta e breve os seguintes tópicos:
1. Funções/Procedimentos
2. Manipulação de Ponteiros
3. Passagem por valor
4. Passagem por referência
5. Vetores como ponteiros
6. Vetores e sua natureza contígua
7. Notação de ponteiros e vetores
8. Matrizes como vetores contíguos
9. Alocação dinâmica com malloc
10. Uso restrito de malloc (pode falhar às vezes)
1
11. Comparação de memória alocada dinamicamente e estática
12. Estilos de armazenamento de matrizes: vetor contínuo e ponteiro de
ponteiros
O professor tem o nome de Jarbas e ele é bem expressivo. Foi uma boa
aula e intriga bastante os alunos a pensarem, perguntarem. Além disso tem
uma boa notação e linguagem pra explicação.
Não tenho certeza se vale a pena explorar os conceitos dado nessa aula
aqui nesse resumo, já que é muito básico e eu conheço todos. Embora, de
fato, achei um pouco de novidade na parte de estilo de armazenamento de
matrizes. Não esperava que pudesse representar uma matriz como um vetor
contínuo com um hack sobre fatiamentos baseado em suas dimensões. Vou
deixar um TODO aqui apenas pra eu descrever isso posteriormente.
2 Tipos de alocações de Matrizes
Os tipos de alocações de matrizes e sua representações na memória podem
ser feitas através de:
1. Matriz como um vetor contíguo
2. Matriz como um vetor de ponteiros
Para o caso 1., esta é a maneira como a alocação estática de matrizes é
feita através da sintaxe de declaração:
1 int matrix[3][4];
É possível alocar memória dinamicamente dessa maneira:
1 int n, m;
2 int *matrix = (int) malloc(sizeof(int)*n*m));
No entanto, durante o acesso dos índices [n][m] uma tradução do compi-
lador é feita, no caso estático, através de: matrix[i][j] -> matrix[i*m + j].
O que pode-se ver que uma matriz é, nesse caso, um fatiamento de um
vetor em passos de m — que para nossa informação é o número de colunas.
2
No entanto fazendo alocação dinâmica, eu preciso fazer essa tradução
manualmente, pois na declaração do tipo o compilador não sabe que na
verdade o que declaro como vetor é na verdade uma matriz. Tudo é uma
questão de como abstrair esses dados.
Para o caso 2., temos algo um pouco mais sofisticado trabalhando com
ponteiros de ponteiros. Essas notas vou deixar para o arquivo seguinte,
1-tipos-estruturados.org.
Uma implementação dos conceitos referentes aqui, sobre tipos de alocação
para matrizes, está escrito no arquivo src/matrix.c
3
	Resumo
	Tipos de alocações de Matrizes

Outros materiais