asignatura: lenguaje de programación de sistema 2014 ppt no. 03
DESCRIPTION
Asignatura: Lenguaje de Programación de Sistema 2014 PPT No. 03. Programa vespertino de Ingeniería (E) en Sistemas Computacionales Profesor: José Estay Araya Sitio de la asignatura: http://www.jiiea.com/SyPrgLan/ User : sist2014 psw : sist#C10. Punteros – Pointer en habla inglesa. - PowerPoint PPT PresentationTRANSCRIPT
Asignatura: Lenguaje de Programación de Sistema 2014
PPT No. 03
Programa vespertino de Ingeniería (E) en Sistemas Computacionales
Profesor: José Estay ArayaSitio de la asignatura:
http://www.jiiea.com/SyPrgLan/User: sist2014 psw: sist#C10
Punteros – Pointer en habla inglesa
• Punteros = apuntadores a memoria • Direcciones de memoria• Contenido de memoria
Vaciado de un sector de memoria, mostrando direcciones segmentadas(modo real) y los contenidos correspondientes:
13AA:0000 CD 20 FF 9F 00 9A EE FE-1D F0 4F 03 0E 0E 8A 03 . ........O.....13AA:0010 0E 0E 17 03 0E 0E 11 04-01 01 01 00 02 FF FF FF ................13AA:0020 FF FF FF FF FF FF FF FF-FF FF FF FF A0 0D 4E 01 ..............N.13AA:0030 CE 12 14 00 18 00 AA 13-FF FF FF FF 00 00 00 00 ................13AA:0040 05 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................13AA:0050 CD 21 CB 00 00 00 00 00-00 00 00 00 00 20 20 20 .!...........13AA:0060 20 20 20 20 20 20 20 20-00 00 00 00 00 20 20 20 .....13AA:0070 20 20 20 20 20 20 20 20-00 00 00 00 00 00 00 00 ........
• Punteros: Idea básica#include <stdio.h>main(){ int valor; /* Una posición de memoria para guardar un carácter. */ int *puntero; /* Un puntero. */
valor = 97;printf("%u => | %d | <= direccion y datos de valor.\n", &valor,valor);puntero = &valor;printf("%u => | %d | <= direccion y datos de puntero.\n",
&puntero,puntero);printf("\n Valor almacenado en puntero = %d\n",puntero);
printf(" Direccion de puntero : &puntero = %u\n",&puntero); printf(" Valor referenciado por puntero: *puntero = %d\n", *puntero);}
• Resultados de la ejecución del programa anterior:
1204 =>|97| · · · · · dirección y dato de valor4562 => |1204| · · · · · dirección y dato de puntero
Compilando con Visual C/C++ Express Edition 2010…ver resultados! (Configurar Win32 CONSOLE APLLICATION, EMPTY PROJECT, con Character Set = NOT SET) para poder compilar nativo
• Se puede modificar el valor de una variable mediante el uso de punteros
• Esto permite pasar mas de un valor desde una función invocada hacia la función que la invocó
• El programa a continuación ilustra este caso:
#include <stdio.h>
main(){
int *puntero; /* Un puntero. */int variable; /* Una posición para guardar un valor. */
variable = 1;puntero = &variable;printf("Valor almacenado en variable = %d\n", variable);printf("Valor almacenado en puntero = %d\n", puntero);
*puntero = 2;printf("Nuevo valor almacenado en variable = %d\n", variable);printf("Valor almacenado en puntero = %d\n", puntero);
}
Resultado de la ejecución del código anterior
Valor almacenado en variable = 1
Valor almacenado en puntero = 7732
Nuevo valor almacenado en variable = 2
Valor almacenado en puntero = 7732
Paso de variables con puntero.• Se muestra otro método para pasar un valor desde la función llamada a la
función que la invoca: el uso de punteros• En lo que se había visto anteriormente:
#include <stdio.h>int llameme(void); /* Función invocada desde main. */main(){
int x; /* Variable que recibe lo devuelto por la función */x = llameme();printf("El valor de x es: %d",x);return(0);
}
int llameme(void){
return(5);
Lo mismo anterior pero con método de punteros:
#include <stdio.h>void llameme(int *p);
main(){ int x;
x = 0;printf("El valor de x es %d\n", x);llameme(&x);printf("El nuevo valor de x es %d\n", x);
}
void llameme(int *p){
*p = 5;}
FIN