INE 5201 – INTRODUÇÃO À CIÊNCIA DA COMPUTAÇÃO

Slides:



Advertisements
Apresentações semelhantes
Programação II Estruturas de Dados
Advertisements

LPG - I: Alocação Dinâmica de Memória - Ponteiros
Escola Secundária c/ 3º CEB da Batalha
Vetor de Ponteiros Exemplo de Alocação. Escrever Vetor de Vetores de floats int main() { int i, k, n; float **vetor; // vetor de vetores int *tamanho;
APRESENTAÇÃO: GIANCARLO DE GUSMÃO GONÇALVES CURSO DE C AULA 08: Tipos Estruturados.
Estrutura de dados II Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Leandro Almeida  As declarações abaixo alocam memória para diversas variáveis.  A alocação é estática, pois acontece antes que o programa.
INE5408 Estruturas de Dados Passagem por Referência.
Jean Carlo Mendes
Jean Carlo Mendes
VARIÁVEIS EM C Dilvan Moreira. Lembrando...  Variável: nome de um local na memória onde dados são armazenados  Evita ter que lembrar um endereço numérico.
CLASSES EM JAVA Dilvan Moreira (baseado no livro Big Java)
Linguagem de Programação – Aula 03 Prof. Me. Ronnison Reges Vidal.
Linguagens de Programação Conceitos e Técnicas Definições e declarações Prof. Isabel Cafezeiro
Princípios de Desenvolvimento de Algoritmos MAC122 Prof. Dr. Paulo Miranda IME-USP Variáveis e Atribuições.
Introdução à Computação para Engenharia MAC2166
Tópicos Preliminares Algorítmos I.
CES-11 ALGORITMOS E ESTRUTURAS DE DADOS Aulas Práticas – 2016
Programação em C Aula 8.
INF1007: Programação 2 2 – Alocação Dinâmica
Construção de Algoritmos AULA 04
ESTATÍSTICA . SÍNTESE DO 10.º ANO . RELAÇÕES BIDIMENSIONAIS (11.º ANO)
Fundamentos de Programação 1
Profa. Mercedes Gonzales Márquez
Comandos da Linguagem C
Estruturas de Repetição
Linguagem C Para programadores Python
Capítulo 8 - Caracteres e Strings
Prof. Wellington Franco
Introdução à Programação BCC 201 Aula
DESENVOLVIMENTO DE PROGRAMAS
Vantagens e desvantagens da recursão
Prof. Wellington Franco Manipulação de Arquivos em C
Programação de Computadores I – Arquivos
Arquitetura de Computadores
FUNDAMENTO DE PROGRAMAÇÃO
UNIDADE 7 Tipos estruturados
INTRODUÇÃO À COMPUTAÇÃO PARALELA
Algoritmos e Programação MC102
Programação de Computadores I – Ponteiros
CES-11 ALGORITMOS E ESTRUTURAS DE DADOS Aulas Práticas – 2017
Fundamentos de Programação 1
DHD – Desenvolvimento em Hardware
Ementário Noções de hardware e software. Conceitos Fundamentais.
Relembrando... Variáveis : endereçam uma posição de memória que contem um determinado valor dependendo do seu tipo (char, int, float, double, ...) void.
Profa. Maria Augusta Constante Puget
Linguagem de Programação II
Programação Orientada a Objetos*
Linguagem PASCAL Tipos Estruturados
Prof. Rafael Mesquita Pilha Prof. Rafael Mesquita
Fundamentos de Programação 1
Sumário Estruturas dinâmicas ligadas Conceito Estrutura de suporte
Programação de Computadores I – Ponteiros
Laboratório I Mateus Raeder.
DHD – Desenvolvimento em Hardware
Linguagem C Linguagem Imperativa
Estruturas de Dados em C
Programação Funcional
Prof: Luciano Barbosa (Slides adaptados do Prof. Hansenclever Bassani)
Arrays de caracteres: strings
ALGORITMOS.
RISC vs. CISC Introdução
Linguagem de Programação Aplicações Avançadas de Microprocessadores
Linguagem C Linguagem Imperativa
Prof. Rafael Mesquita Listas Encadeadas Prof. Rafael Mesquita
Introdução a progrmação Comandos condicionais: if e switch
Ponteiros.
Constantes, Variáveis e Memória
RESULUÇÃO DOS EXERCÍCIOS E
CES-11 ALGORITMOS E ESTRUTURAS DE DADOS Aulas Práticas – 2019
Transcrição da apresentação:

INE 5201 – INTRODUÇÃO À CIÊNCIA DA COMPUTAÇÃO https://www.ime.usp.br/~pf/algoritmos/index.html

Endereços e ponteiros

Os conceitos de endereço e ponteiro são fundamentais em qualquer linguagem de programação, embora fiquem ocultos em algumas linguagens.  Em C, esses conceitos são explícitos.  Dominar o conceito de ponteiro exige algum esforço e uma boa dose de prática.

Endereços A memória RAM de qualquer computador é uma sequência de bytes. Cada byte armazena um de 256 possíveis valores. Os bytes são numerados sequencialmente e o número de um byte é o seu endereço (= address).

Cada objeto na memória do computador ocupa um certo número de bytes consecutivos. Um char ocupa 1 byte. Um int ocupa 4 bytes e um double ocupa 8 bytes em muitos computadores. O número exato de bytes de um objeto é dado pelo operador sizeof: a expressão sizeof (int), por exemplo, dá o número de bytes de um int no seu computador.

Cada objeto na memória tem um endereço Cada objeto na memória tem um endereço. Na maioria dos computadores, o endereço de um objeto é o endereço do seu primeiro byte. Por exemplo, depois das declarações

char c; int i; struct { int x, y; } ponto; int v[4];

O endereço de um objeto (como uma variável, por exemplo) é dado pelo operador &. Se i é uma variável então &i é o seu endereço.

Um exemplo: O segundo argumento da função de biblioteca scanf é o endereço da variável onde deve ser depositado o objeto lido do dispositivo padrão de entrada: int i; scanf ("%d", &i);

Exercícios 1 Tamanhos. Compile e execute o seguinte programa: int main (void) { typedef struct { int dia, mes, ano; } data; printf ("sizeof (data) = %d\n", sizeof (data)); }

Ponteiros Um ponteiro (= apontador = pointer) é um tipo especial de variável que armazena endereços. Um ponteiro pode ter o valor especial NULL que não é endereço de lugar algum.

A constante NULL está definida na interface stdlib A constante NULL está definida na interface stdlib.h e seu valor é 0 na maioria dos computadores.

Se um ponteiro p armazena o endereço de uma variável i, podemos dizer p aponta para i ou p é o endereço de i. Em termos um pouco mais abstratos, diz-se que p é uma referência à variável i. Se um ponteiro p tem valor diferente de NULL então *p é o valor do objeto apontado por p.

Não confunda esse uso de. com o operador de multiplicação Não confunda esse uso de * com o operador de multiplicação! Por exemplo, se i é uma variável e p vale &i então dizer *p é o mesmo que dizer i.