Вы находитесь на странице: 1из 3

ESTRUTURAS SEQUENCIAIS 24/10/2016

Estruturas sequenciais (vetores) possuem alocação estática de memória.

Variáveis podem ser dinâmicas


Vamos inicialmente explicar as áreas de memória:

PONTEIROS

Ponteiros são variáveis cujo conteúdo é o endereço de outra variável na memória.

Sintaxe:
int*p; //leia-se: p é um ponteiro para a variável inteira
float*q; //leia-se: q é um ponteiro para uma variável float

posso ter:
int a;

Para criar um ponteiro para “a” utilizo o operador “&”


Int*p;

P=&a; //leia-se: “p” recebe o endereço de “a”

Operador “*”
*p=7;
a=a*2;

Operador “->”
Esse operador permite discriminar um campo de uma struct apontada por um ponteiro

Ex:
struct Taluno{
string nome;
float nota;
int matricula;
}
.
.
Taluno aluno;
aluno.nome= “Joao”;
aluno.nota= “7.0”;
aluno.matricula= 1234;
.
.
Taluno* pAlu; // pAlu é um ponteiro para uma estrutura Taluno
pAlu= &aluno;
cout << pAlu-> nome;
pAlu -> nota= pAlu -> nota + 0.5;

ALOCAÇÃO DINÂMICA DE MEMÓRIA

Para alocar dinamicamente uma área de memória, usamos o comando new.

Sintaxe:
int*p;
p=new int; //aloca espaço para um inteiro e aloca em p o endereço alocado
*P= 37;

Para desalocar a memória, uso o ponteiro que a aponta. Assim:

Delete p; //desaloca a área apontada por p e retorna essa área para o pool de memória livre

- Vamos fazer um programa para manipular uma área de memória dinâmica.


Crie uma struct de produtos com nome, código e preço.
Crie uma variável dinâmica para um produto.
Preencha as informações do produto fornecidas pelo usuário.
Imprime as informações do produto.

struct Tprodudo{
string nome;
int codigo;
float preco;
}
int main( ){
Tproduto* p;
P= new Tproduto;
cout << “nome:”;
cin >> p->nome;
cout <<”código”:;
cin >>p->código;
cout <<”preco:”;
cin >> p->preco;
cout << p->nome<<” “<< p->”codigo <<”<< p-> preco
}

Queremos relacionar pessoas com seu respectivo cônjuge.


Uma estrutura para pessoa, sendo:

struct Tpessoa{
string nome;
string endereço;
Tpessoa*Pconjuge;
}
Tpessoa* paux;
paux= new Tpessoa;
paux-> nome= “Jacqueline”;
paux-> endereço= “Rua Itu,2”
paux-> pconjuge= new Tpessoa;
paux-> pconjuge-> nome= “Miguel”;
paux-> pconjuge-> endereço= paux-> endereço;
paux-> pconjuge-> pconjuge= pconjuge= paux;

Вам также может понравиться