Escolar Documentos
Profissional Documentos
Cultura Documentos
Punteros y arrays
37
I
n
t
r
o
d
u
c
c
i
n
a
l
a
P
r
o
g
r
a
m
a
c
i
n
M
a
r
a
L
u
q
u
e
R
o
d
r
g
u
e
z
Punteros a punteros
Declaracin:
n
a
l
a
P
r
o
g
r
a
m
a
c
i
n
M
a
r
a
L
u
q
u
e
R
o
d
r
g
u
e
z
Punteros a punteros
valor=95;
*ptr1=105;
**ptr2=99;
39
I
n
t
r
o
d
u
c
c
i
n
a
l
a
P
r
o
g
r
a
m
a
c
i
n
M
a
r
a
L
u
q
u
e
R
o
d
r
g
u
e
z
Ari tmti ca de punteros
p=q
p+=n (p=p+n)
p=p+10
Relacionales
Operaciones NO vlidas
n
a
l
a
P
r
o
g
r
a
m
a
c
i
n
M
a
r
a
L
u
q
u
e
R
o
d
r
g
u
e
z
Ari tmti ca de punteros
n
a
l
a
P
r
o
g
r
a
m
a
c
i
n
M
a
r
a
L
u
q
u
e
R
o
d
r
g
u
e
z
Punteros y arrays
uni di mensi onal es
v es igual a &v[0]
*v equivale a v[0]
n
a
l
a
P
r
o
g
r
a
m
a
c
i
n
M
a
r
a
L
u
q
u
e
R
o
d
r
g
u
e
z
Punteros y arrays
uni di mensi onal es
v apunta a v[0]
n
a
l
a
P
r
o
g
r
a
m
a
c
i
n
M
a
r
a
L
u
q
u
e
R
o
d
r
g
u
e
z
Punteros y arrays
uni di mensi onal es
float vector[5]={10,20,30,40,50};
44
I
n
t
r
o
d
u
c
c
i
n
a
l
a
P
r
o
g
r
a
m
a
c
i
n
M
a
r
a
L
u
q
u
e
R
o
d
r
g
u
e
z
Punteros y arrays
uni di mensi onal es
//Distintas forma de sumar los elementos de un
vector
#define Dim 5
int main(){
int i, suma;
int *ptr, *ptrfin;
int v[Dim]={1,2,3,4,5};
/* ------------------------------*/
suma=0;
for(i=0;i<Dim;i++) {
suma=suma+v[i];
}
printf(Resultado para suma=suma+V[i]:%d\n,
suma);
suma.c
45
I
n
t
r
o
d
u
c
c
i
n
a
l
a
P
r
o
g
r
a
m
a
c
i
n
M
a
r
a
L
u
q
u
e
R
o
d
r
g
u
e
z
Punteros y arrays
uni di mensi onal es
/* ------------------------------*/
suma=0;
for(i=0;i<Dim;i++) {
suma=suma+(*(v+i));
}
printf(Resultado para suma=suma+(*(V+i)):%d\n,
suma);
/* ------------------------------*/
suma=0;
ptr=v;
for(i=0;i<Dim;i++) {
suma=suma+ptr[i];
}
printf(Resultado para suma=suma+ptr[i]:%d\n,
suma);
suma.c
46
I
n
t
r
o
d
u
c
c
i
n
a
l
a
P
r
o
g
r
a
m
a
c
i
n
M
a
r
a
L
u
q
u
e
R
o
d
r
g
u
e
z
Punteros y arrays
uni di mensi onal es
/* ------------------------------*/
suma=0;
ptrfin=v+Dim;
for(ptr=v;ptr<ptrfin;ptr++) {
suma=suma+(*ptr);
}
printf(Resultado para suma=suma+(*ptr):%d\n,
suma);
/* ------------------------------*/
suma=0;
ptr=v;
for(i=0;i<Dim;i++) {
suma=suma+(*(ptr+i));
}
printf(Resultado para suma=suma+(*(ptr+i)):
%d\n,suma);
suma.c
47
I
n
t
r
o
d
u
c
c
i
n
a
l
a
P
r
o
g
r
a
m
a
c
i
n
M
a
r
a
L
u
q
u
e
R
o
d
r
g
u
e
z
Punteros y arrays
uni di mensi onal es
/* ------------------------------*/
suma=0;
ptr=v;
for(i=0;i<Dim;i++) {
suma=suma+(*ptr++);
}
printf(Resultado para suma=suma+(*ptr++):
%d\n,suma);
return 0;
}
suma.c
Primero se aplica *
luego se aplica ++
48
I
n
t
r
o
d
u
c
c
i
n
a
l
a
P
r
o
g
r
a
m
a
c
i
n
M
a
r
a
L
u
q
u
e
R
o
d
r
g
u
e
z
Cadenas caracteres
n
a
l
a
P
r
o
g
r
a
m
a
c
i
n
M
a
r
a
L
u
q
u
e
R
o
d
r
g
u
e
z
Cadenas. Errores comunes
n
a
l
a
P
r
o
g
r
a
m
a
c
i
n
M
a
r
a
L
u
q
u
e
R
o
d
r
g
u
e
z
Cadenas errores comunes
int main() {
char cad[]=abcde;
char * ptr = cad;
//error en tiempo de ejecucin
//sobrepasamos el espacio reservado para cad
strcpy(ptr,Hasta luego cocodrilo);
}
int main() {
char * p;
//Error, no hemos reservado memoria para los
//datos apuntados por el puntero
strcpy(p,wxieldki);
printf(<%s>,p);
return 0;
}
errorCadena.c
wildPointer.c
51
I
n
t
r
o
d
u
c
c
i
n
a
l
a
P
r
o
g
r
a
m
a
c
i
n
M
a
r
a
L
u
q
u
e
R
o
d
r
g
u
e
z
Punteros y arrays
bi di mensi onal es
int M[maxF][maxC]
n
a
l
a
P
r
o
g
r
a
m
a
c
i
n
M
a
r
a
L
u
q
u
e
R
o
d
r
g
u
e
z
Punteros y arrays
bi di mensi onal es
n
a
l
a
P
r
o
g
r
a
m
a
c
i
n
M
a
r
a
L
u
q
u
e
R
o
d
r
g
u
e
z
Punteros y arrays
bi di mensi onal es
n
a
l
a
P
r
o
g
r
a
m
a
c
i
n
M
a
r
a
L
u
q
u
e
R
o
d
r
g
u
e
z
Punteros y arrays
bi di mensi onal es
for (i=0; i<nElem; i++) {
if (*ptr<0) {
*ptr=0;
}
ptr++;
}
for (i=0;i<maxF;i++){
for(j=0; j<maxC; j++){
printf(matriz[%d][%d]=%d\n,i,j,matriz[i]
[j]);
}
}
La matriz se almacena en
posiciones consecutivas de
memoria
elimina.c
55
Punteros
Modularizacin
56
I
n
t
r
o
d
u
c
c
i
n
a
l
a
P
r
o
g
r
a
m
a
c
i
n
M
a
r
a
L
u
q
u
e
R
o
d
r
g
u
e
z
Modul ari zaci n con arrays
n
a
l
a
P
r
o
g
r
a
m
a
c
i
n
M
a
r
a
L
u
q
u
e
R
o
d
r
g
u
e
z
Modul ari zaci n con vectores
n
a
l
a
P
r
o
g
r
a
m
a
c
i
n
M
a
r
a
L
u
q
u
e
R
o
d
r
g
u
e
z
Modul ari zaci n con vectores
//Tercera versin: puntero al primer elemento
void f3(int * vector, int tope) {
int i;
for (i=0;i<tope;i++)
printf(%d,vector[i]);
}
//Cuarta versin: puntero al primer elemento
void f4(int * vector, int tope) {
int i, *ptrfinal,*ptr;
ptrfinal=vector+tope;
for (ptr=vector;ptr<ptrfinal;ptr++)
printf(%d,*ptr);
}
pasoVectores.c
59
I
n
t
r
o
d
u
c
c
i
n
a
l
a
P
r
o
g
r
a
m
a
c
i
n
M
a
r
a
L
u
q
u
e
R
o
d
r
g
u
e
z
Modul ari zaci n con vectores