Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Programacin en C 1
Punteros
Programacin en C 2
Punteros
px
px=&y; px-> 35: 0 0 0 39 39
0 0 0 3 y
/* px apunta a y */ y -> 39: 3
px
*px=5; px-> 35: 0 0 0 39 39
0 0 0 5 y
/* y vale 5 */ y -> 39: 5
Programacin en C 3
1 int *punt;
int x=7;
int y=5;
punt=&x;
*punt=4;
printf(%d, %d,x,y); // qu imprime este printf?
2 int *punt;
int x=7;
int y=5;
punt=&x;
x=4;
printf(%d, %d,*punt,y); // qu imprime este printf?
3 int *punt;
int x=7;
int y=5;
punt=&x;
x=4;
punt=&y;
printf(%d, %d,*punt,x); // qu imprime este printf?
Programacin en C 4
4 int *punt;
int x=7;
int y=5;
punt=&x;
*punt=3;
punt=&y;
*punt=x;
x=9;
printf(%d, %d,*punt,x); // qu imprime este printf?
Programacin en C 7
Arrays
La definicin de una variable de tipo array (vector) se
realiza indicando la dimensin entre corchetes:
int a[100]; /* Un vector de 100 enteros */
float vx[4][4]; /* Matriz de 4x4 reales */
int *pt[10][10][10][10]; /* Una matriz de 4 dimensiones
de punteros a enteros */
Asimismo, pueden inicializarse:
float a[3]={2.45, -1.34, 2.11};
int vx[2][3]={{3,5,1},{2,1,2}};
Programacin en C 8
Indexacin de arrays
a 23 28
a[0] a[1] a[2] a[3] a[4] a[5]
Programacin en C 9
Ejemplo Array
Programacin en C 10
Strings (cadenas)
Los strings son los arrays de caracteres de una dimensin.
Son las cadenas de caracteres.
Definicin:
char x[20],n[50]=Chema;
/*equivalente a char n[50]={C,h,e,m,a,\0}*/
n C h e m a \0
n[0] n[1] n[2] n[3] n[4] n[5]
Carcter
nulo
Programacin en C 11
Asignacin de Strings
Programacin en C 12
Ejemplo Cadena
Programacin en C 13
Ejemplo Cadena2
Programacin en C 14
Ejemplo Cadena3
Ojo! No hemos puesto el operador & delante de cadena! Es un error? No. Con las cadenas
no hay que poner el carcter & del identificador al usar scanf . Por que? Porque scanf espera
una direccin de memoria y el identificador, por la dualidad vector-puntero, es una direccin
de memoria!
Programacin en C 15
Lectura con gets
Programacin en C 16
Lectura con gets
La funcin gets lee todos los caracteres que hay hasta encontrar un salto de linea.
Programacin en C 17
Copia de cadenas
Programacin en C 18
Copia de cadenas (mejorada)
Programacin en C 19
Copia de cadenas (usando funciones)
Programacin en C 20
Arrays y punteros
Programacin en C 21
Arrays y punteros
El nombre de un array es la direccin del primer elemento del array. Esto se
expresa mediante las siguiente frmula:
X[ i ]=*(X +i)
Ejemplos:
int miarray[7];
int *punt;
punt=&miarray[0]; // idem que punt=miarray;
*punt=5; //idem que punt[0]=5;
(*punt+2)=5; //idem que punt[2]=5;
int *punt,i;
int x[5]={1,2,3,4,5};
punt=x;
*punt=9;
for(i=0;i<5;i++)
printf(%d,,x[i]); // qu imprime?
Programacin en C 22
Ejemplos:
int *punt,i;
int x[5]={1,2,3,4,5};
punt=&x[0];
*punt=9;
punt[3]=7;
for(i=0;i<5;i++)
printf(%d,,x[i]); // qu imprime?
int *punt,i;
int x[5]={1,2,3,4,5};
punt=x;
*x=11;
*(punt+3)=9 ;
for(i=0;i<5;i++)
printf(%d,,x[i]); // qu imprime?
Programacin en C 23
Ejemplos:
int *punt,i;
int x[5]={1,2,3,4,5};
punt=x;
*(punt+2)=9;
*(x+3)=7 ;
punt[1]=11 ;
for(i=0;i<5;i++)
printf(%d,,*(punt+i)); // qu imprime?
int *punt,i;
int x[5]={1,2,3,4,5};
punt=x+4;
*(punt-2)=9;
punt--;
*(punt)=7 ;
punt[1]=11 ;
for(i=0;i<5;i++)
printf(%d,,*(x+i)); // qu imprime?
Programacin en C 24
Ejemplos:
int *punt,i;
int x[5]={1,2,3,4,5};
punt=&x[0]+3;
*(punt-2)=9;
punt--;
*(punt)=7 ;
punt[1]=11 ;
punt=x;
for(i=0;i<5;i++)
printf(%d,,punt[i])); // qu imprime?
Programacin en C 25
Arrays y punteros
Programacin en C 27
scanf()
donde:
format : Es el string de formato de entrada de los datos.
diri : Es la direccin donde se almacena el resultado.
Programacin en C 28
scanf()
Ejemplo
int a,*pa;
float x;
char c;
Programacin en C 29
scanf() Lectura de strings
Ejemplo:
char *pc;
char str[82];
scanf(%s,pc); /* PELIGROSO */
Programacin en C 30