1 / 10

Asignatura: Lenguaje de Programación de Sistema 2014 PPT No. 03

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.

duy
Télécharger la présentation

Asignatura: Lenguaje de Programación de Sistema 2014 PPT No. 03

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Asignatura: Lenguaje de Programación de Sistema 2014PPT 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

  2. 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 ........

  3. Punteros: Idea básica #include <stdio.h> main() { intvalor; /* 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); }

  4. Resultados de la ejecución del programa anterior: 1204 =>|97| · · ·· · dirección y dato de valor 4562 => |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

  5. 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:

  6. #include <stdio.h> main() { int*puntero; /* Un puntero. */ intvariable; /* 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); }

  7. 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

  8. 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> intllameme(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); } intllameme(void) { return(5);

  9. Lo mismo anterior pero con método de punteros: #include <stdio.h> voidllameme(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); } voidllameme(int *p) { *p = 5; }

  10. FIN

More Related