Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas

Introdução à Memória e Ponteiros em Linguagem de Programação C, Resumos de Programação em C

Aprenda sobre a memória ram do computador, como é dividida em bytes, e como as variáveis são alocadas e armazenadas na memória. Saiba também sobre ponteiros, que são variáveis que armazenam endereços de outras variáveis, e como eles podem ser utilizados para manipular o conteúdo de outras variáveis. Este documento também aborda a passagem de parâmetros por referência em funções.

Tipologia: Resumos

2019

Compartilhado em 08/10/2022

dayll-7
dayll-7 🇧🇷

1 documento

1 / 30

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
LINGUAGEM DE PROGRAMAÇÃO
Ponteiros e Funções
(Passagem de Parâmetros por Referência)
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e

Pré-visualização parcial do texto

Baixe Introdução à Memória e Ponteiros em Linguagem de Programação C e outras Resumos em PDF para Programação em C, somente na Docsity!

LINGUAGEM DE PROGRAMAÇÃO

Ponteiros e Funções

(Passagem de Parâmetros por Referência)

Considerações sobre a memória

  • O computador possui uma grande capacidade de memória RAM, que o programador pode utilizar em seus programas.
  • Por ser muito grande, vamos utilizar um pedaço, um trecho, de memória como exemplo.

Trecho de memória

A1h A2h A3h A4h A5h A6h A7h A8h A9h AAh A memória do computador é dividida em bytes. Cada pedaço laranja representa 1 byte. Portanto, neste trecho de memória, pego como exemplo, nós temos 10 bytes byte 1 byte 4 byte 2 Byte 3 byte 5 byte 6 byte 7 byte 8 byte 9 byte 10

Considerações sobre a memória

  • Quando você declara uma variável, o compilador reserva uma região de memória para ela.
  • Essa região de memória é reservada de acordo com o tamanho do tipo de dado para o qual a variável foi declarada. Trecho de memória A1h A2h A3h A4h A5h A6h A7h A8h A9h AAh

char c;

Variáveis do tipo char, que arma- zenam caracteres, ocupam 1 byte

char c;

Variáveis do tipo char, que arma- zenam caracteres, ocupam 1 byte

int ni;

Variáveis do tipo int, que armaze- nam números inteiros, ocupam 2 bytes

int ni;

Variáveis do tipo int, que armaze- nam números inteiros, ocupam 2 bytes

float nf;

Variáveis do tipo float, que armaze- nam números com vírgulas (de ponto flutuante), ocupam 4 bytes

float nf;

Variáveis do tipo float, que armaze- nam números com vírgulas (de ponto flutuante), ocupam 4 bytes

char ch[3];

Como cada char ocupa 1 byte, os vetores de caracteres (strings) ocupam tantos bytes quantos forem seus elementos (neste caso são 3 )

Considerações sobre a memória

  • Cada variável possui um endereço de memória diferente;
  • Ao atribuir valor a uma variável, o valor atribuído é colocado na região de

memória que foi reservada para ela.

Trecho de memória A1h A2h A3h A4h A5h A6h A7h A8h A9h AAh

char c; região de memória alocada

para a variável c (char). c = ‘A’; ‘A’ Note que o endereço da variável c, neste caso, é A1h. A1h

Declaração de Ponteiros

  • Os ponteiros são iguais às variáveis comuns. A única diferença está no fato dele armazenar endereço, e não valor.
  • Declarando um ponteiro, coloque o símbolo de asterisco ao lado do tipo da variável:

char * numero;

  • O símbolo asterisco é que vai indicar para a linguagem C que você quer um ponteiro e não uma variável comum.

Declaração de Ponteiros

  • Para cada tipo de variável há um ponteiro específico.
  • Isso significa que se você vai armazenar o endereço de uma variável do tipo int, deve criar um ponteiro para int (que é int). Se for char, um ponteiro para char (char).

– char* pc;

  • No exemplo acima, o C vai saber que você está criando uma variável chamada pc que vai armazenar endereços de variáveis do tipo char.

– int* pn;

  • No exemplo acima, o C vai saber que você está criando uma variável chamada pn que vai armazenar endereços de variáveis do tipo int.

Atribuição a Ponteiros

  • A atribuição é igual como em qualquer variável char* ptr = 1020 h ; // coloca o endereço 1020 h no ponteiro
  • Os ponteiros são mais utilizados para armazenar o endereço de outras variáveis: char c = ‘A’; // coloca o valor ‘A’ na variável c char* ptr = &c; // coloca o endereço da variável c no ponteiro
  • Note que o operador & (que retorna o endereço de uma variável) foi utilizado! OBS: A princípio, você não pode atribuir endereços de variáveis que não sejam do mesmo tipo do ponteiro: int a = 20 ; char* ptr = &a; // Errado, pois a não é do tipo char!

Endereço da Variável em que o Ponteiro Aponta

 Se você mandar imprimir uma variável do tipo ponteiro, ela vai mostrar o endereço armazenado nela: char c = ‘A’; // coloca o valor ‘A’ na variável c char* ponteiro = &c; // coloca o endereço da variável c no ponteiro printf(“%p”, ponteiro); // imprime o conteúdo do ponteiro, que é o endereço da variável c Trecho de memória A1h A2h A3h A4h A5h ‘A’ Variável c (contendo o valor ‘A’) A1h (^) Variável ponteiro (contendo o endereço A1h)

Exemplo Ponteiros

int main(){ int a = 5; int ptr; ptr = &a; //conteúdo da variável a printf(“%d”,ptr); //endereço da variável a printf(“%p”,ptr); //endereçodo ponteiro printf(“%p”,&ptr); return 0 ; } Imprime o valor 5

Exemplo Ponteiros

*int main(){ int a; int ptr; ptr = &a; //inicializando o ponteiro ptr = 5; printf(“Endereco da variavel = %p”,&a); printf(“Valor p/ onde ponteiro aponta = %d”,ptr); printf(“Endereco p/ onde ponteiro aponta = %p”, ptr); printf(“Endereco do ponteiro = %p”,&ptr); return 0 ; }

Mudança de valores em outra função

Mudança de valores em outra função

Mudança de valores em outra função

Mudança de valores em outra função