Академический Документы
Профессиональный Документы
Культура Документы
c Definição
c Uso
c Operadores
c Operações
c Vetores x Ponteiros
c Matrizes x Ponteiros
c Indireção Múltipla (ponteiro p/ ponteiro)
c Alocação Dinâmica
`
c Definição
Ponteiros são endereços de memória.
Cuidado: Não são inicializados.
u u
u
c Uso
Permite a modificação dos argumentos das funções através da
referência ao endereço de memóriau
0 è o conteúdo do endereço.
Sendo que na declaração indica o tipo da variável.
ex.: int *pu
è o endereço de memória.
p = &n1u // o ponteiro é inicializado
`
main () {
int num=25u
int *pontu // * (asterisco) indica o tipo da variável
p1 =&nu
p2 = p1u
printf("\nO conteudo de p1: %p p2: %p",p1,p2)u
*p1=*p2u
printf("\nO conteudo p1: %d p2: %d\n\n",*p1,*p2)u
Incremento e Decremento
No incremento o ponteiro passa apontar para o próximo valor
do mesmo tipo para o qual o ponteiro aponta.
O compilador usa o tipo do ponteiro para calcular a próxima
posição de memória.
p++u /* Só muda a posição de memória não o
conteúdo */
p--u
`
Operações com o conteúdo dos ponteiros
p1 > p2
5) Qual será a saída deste programa supondo que i ocupa o endereço
09
na memória
main() {
int i=5, *pu
p = &iu
printf(³%x %d %d %d %d \n´, p,*p+2,**&p,3**p,**&p+
)u
5) Qual será a saída deste programa supondo que i ocupa o endereço
09
na memória
main() {
int i=5, *pu
p = &iu
printf(³%x %d %d %d %d \n´, p,*p+2,**&p,3**p,**&p+
)u
int *pu
int au // em a será definido a quantidade de elementos a serem alocados
if (!p) { // if (p==NULL)
printf ("** rro: Memoria Insuficiente **")u
exit(0)u
! ##
Alocar memória, semelhante a malloc.
a = 50u
p = realloc (p, a*sizeof(int))u
! $
int *pu
int au
p=(int *)malloc(a*sizeof(int))u
if (!p) { // if (p==NULL)
printf ("** rro: Memoria Insuficiente **")u
exit(0)u
free(p)u
% &!
% V
Se o vetor for declarado dentro do corpo de uma função não pode ser
usado fora do corpo da função
#define N 10
int v[N]u
% &!
! V
int* v
v = (int*) malloc(n * sizeof(int))u
! V
'
Com a alocação dinâmica de vetores podemos referenciar o
nome do vetor como um ponteiro constante.
alocar_vetor.cpp
alocar_vetor.exe
% &!
!
alocar_matriz.cpp
alocar_matriz.exe
! V
'
)#*+
', -
#include <stdio.h>
#include <stdlib.h>
u
u
u
uu
'(#
"+
'" #
/* preenche matriz */
for (i=0u i<mu i++)
for (j=0u j<nu j++)
trp[ j*m+i ] = mat[ i*n+j ]u
return trpu
'(#
"+
'
.'
/* preenche matriz */
for (i=0u i<mu i++)
for (j=0u j<nu j++)
trp[ j ] [ i ] = mat[ i ][ j ]u
return trpu
'(
.#/