PROGRAMAÇÃO
ESTRUTURADA II
Profª. Noeli
Ciência da Computação
1
PONTEIROS
CIÊNCIA DA COMPUTAÇÃO
Ponteiros
A Linguagem C permite que o
programador referencie a posição de
objetos bem como os próprios objetos
(isto é, o conteúdo de suas posições).
CIÊNCIA DA COMPUTAÇÃO
Ponteiros
Por exemplo:
Se x for declarado como um inteiro, &x se
referirá à posição reservada para conter x.
&x é chamado PONTEIRO.
É possível declarar uma variável cujo tipo de
dado seja um ponteiro e cujos possíveis
valores sejam posições de memória.
CIÊNCIA DA COMPUTAÇÃO
Ponteiros
Por exemplo:
int *pi;
float *pf;
char *pc;
pi é um ponteiro para inteiro;
pf é um ponteiro para um número ponto flutuante;
char é um ponteiro para um char;
O asterisco indica que valores das variáveis
declaradas são ponteiros para valores dos tipos
especificados na declaração.
CIÊNCIA DA COMPUTAÇÃO
Ponteiros
•Um ponteiro é como qualquer outro tipo de dado
em C.
•O valor de um ponteiro é uma posição de
memória, da mesma forma que o valor de um
inteiro é um número.
•Os valores dos ponteiros podem ser atribuídos.
Exemplo:
pi = &x;
CIÊNCIA DA COMPUTAÇÃO
Ponteiros em C
A notação
*pi
em C refere-se ao inteiro na posição referenciada
pelo ponteiro pi.
x = *pi;
Atribui o valor deste inteiro à variável inteira x.
CIÊNCIA DA COMPUTAÇÃO
Aritmética com Ponteiros
Se pi é um ponteiro para um inteiro, então pi + 1
é o ponteiro para o inteiro imediatamente
seguinte ao inteiro *pi na memória.
pi – 1 é o ponteiro para o inteiro imediatamente
anterior a *pi;
pi + 2 é o o ponteiro para o segundo inteiro
depois de *pi e assim por diante;
CIÊNCIA DA COMPUTAÇÃO
Ponteiros
Usaremos ponteiros para:
•Passagem de parâmetros para funções;
•Alocação dinâmica de memória.
CIÊNCIA DA COMPUTAÇÃO
Exemplo 1
#include <stdio.h>
#include <stdlib.h>
void main()
{
int x;
int *p1, *p2;
p1 = &x;
p2 = p1;
printf("%p\n\n", p2);
system("PAUSE");
}
CIÊNCIA DA COMPUTAÇÃO
Exemplo 2
#include <stdlib.h>
#include<stdio.h>
void main()
{
int *p, *q, a, b, c;
printf("Digite dois numeros: \n");
scanf("%d %d", &a, &b);
p = &a;
q = &b;
c = *p + *q;
printf("variavel a: %d \n Endereço de memória: %p \n", a, p);
printf("\n\nVariavel b: %d \n Endereço de memória: %p \n", b, q);
printf("A soma e: %i \n\n",c);
system("PAUSE");
}
CIÊNCIA DA COMPUTAÇÃO
Download

programação