Punteros.

Slides:



Advertisements
Presentaciones similares
DATSI, FI, UPM José M. Peña Programación en C DATSI, FI, UPM José M. Peña Programación en C.
Advertisements

Tema 4b Operadores.
Funciones y recursividad
LOGROS DEL PERÍODO Utiliza de forma correcta las funciones para entrada y salida de datos en c++. Utiliza los elementos básicos de un programa en c++.
Procedimientos y Funciones
Programación I Teoría III
Programación I Teoría IV
Programación, Algoritmos y Estructuras de Datos
Direcciones, Arreglos y Argumentos de Funciones
Funciones. Programación, Algoritmos y Estructuras de Datos.
Tipos de Datos Básicos y Estructurados
Punteros Universidad Nacional Mayor de San Marcos
FUNCIONES EN C.
INFORMATICA I Arreglos 1 CLASE 17.
INFORMATICA I Funciones CLASE 13.
Tema 1. Introducción a la programación (Lenguaje java).
Ismael Camarero1. 2 ¿Qué es un PUNTERO?: Un puntero es un objeto que apunta a otro objeto. Es decir, una variable cuyo valor es la dirección de memoria.
Programación Estructurada
SOBRECARGA DE FUNCIONES
Estructuras de Datos Punteros y algo más.
Unidad 3 Punteros.
Curso Práctica 3 1 Funciones CONTENIDO Consideraciones sobre funciones Estructura de un programa en C Uso de funciones Paso de parámetros Punteros.
Acciones y funciones Concepto
¿Qué es un PUNTERO?: Un puntero es un objeto que apunta a otro objeto. Es decir, una variable cuyo valor es la dirección de memoria de otra variable. No.
Funciones “En C” Semestre de Otoño 2006 Claudio Gutiérrez-Soto.
Tema 7: Polimorfismo Antonio J. Sierra. Índice Introducción. Sobrecarga de métodos. Objetos como parámetros. Paso de argumentos. Devolución de objetos.
Funciones en lenguaje C
FUNCIONES EN C.
CI TEORIA semana 8 Subprogramas o funciones Definición de funciones.

Diseño de algoritmos “Punteros”
Tema 9 Estructuras.
Semana 5 Subprogramas..
FUNCIONES EN C. SOBRE FUNCIONES... Caja negra in_1 in_N out_1 In_2 Función: Nombre. (Con el cual es invocada). Entradas. (Parámetros de la función). Salida.
Introducción a los punteros
FUNCIONES EN C.
Capítulo 5. Punteros y Cadenas de Caracteres
APUNTADORES EN C. MENU DEL DIA Repaso clase anterior Apuntadores. Eso pa que? Solución al problema: Funciones. Ventajas de trabajar un programa usando.
Prog. Univ. Rodríguez Rey, Pablo Funciones Programación I.
Índice. Revisando conceptos acerca de la memoria.
Archivos.
TABLAS Definición. El tipo tabla permite definir objetos formados por un conjunto de elementos del mismo tipo. Ejemplos. El tipo tabla se utiliza para.
Descomposición Modular. Funciones
COMPUTACIÓN I TEMA 6. Pasaje de parámetros por Referencia. Uso de apuntadores Prof. Mireya Morales.
Tipo de Datos Básicos.
PUNTEROS Ing Anghello Quintero.
El lenguaje de programación C - Vectores y matrices -
FUNCIONES Conceptos básicos. Retorno de una función Clases de funciones. Paso de parámetros. Funciones y arrays.
Informática Ingeniería en Electrónica y Automática Industrial
Programación Técnica1UVM Tipos de Datos. Programación Técnica2UVM.
Programación en C para electrónicos
PUNTEROS Y REFERENCIAS
Trazado. 1 Intercambio sin error #include void intercambio(int *, int *); /* prototipo */ main(){ int a=1,b=2; printf("a=%d b=%d\n",a,b); intercambio(&a,&b);
APUNTADORES.
1 Definición y Conversión de datos Agustín J. González ELO-329.
Los punteros Programación modular.
Radio Volumen esfera m. m #include.
Fundamentos de Programación

LENGUAJE “C” Programación.
PUNTEROS EN EL LENGUAJE C
TIPOS DE DATOS PARCIAL III FUNCIONES. Las funciones son un conjunto de instrucciones que realizan una tarea específica. En general toman ciertos valores.
Paso de Parámetros a una Función Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de.
MEMORIA DINÁMICA.
1 Definición y Conversión de datos Agustín J. González ELO-329.
PROF. RAFAEL MONTENEGRO B. UNELLEZ-APURE Introducci Ó n a los Arreglos (“arrays”) en C++
Introducción al Lenguaje C (I) Tipos básicos, arrays y punteros Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión
Computación I :: Prof. Yeniffer Peña Lenguaje C Presentación Computación I.
Funciones y paso de parámetros Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión Unidad Didáctica 24.
Funciones en lenguaje C 2 Funciones Definición: – Las funciones son los bloques de construcción básicos de C. Dentro de ellas se da toda la actividad.
Transcripción de la presentación:

Punteros

Intercambio con error ¿porqué? #include <stdio.h> void intercambio(int, int); /* prototipo */ main(){ int a=1,b=2; printf("a=%d b=%d\n",a,b); intercambio(a,b); /* llamada */ return 0; } void intercambio(int x, int y){ /* declaración formal */ int temp; temp=x; x=y; y=temp; printf(“ x=%d y=%d\n“,x,y); 1

Intercambio con error ¿porqué? #include <stdio.h> void intercambio(int, int); /* prototipo */ main(){ int a=1,b=2; printf("a=%d b=%d\n",a,b); intercambio(a,b); /* llamada */ return 0; } void intercambio(int x, int y){ /* declaración formal */ int temp; temp=x; x=y; y=temp; printf(“ x=%d y=%d\n“,x,y); Porque se pasan parámetros por valor!! Solución: pasar parámetros por referencia! => usar punteros !! 1

Definición y operador & Puntero es una variable cuyo contenido es la dirección de una variable. (apunta a una variable) Ejemplo: sea p una variable de tipo puntero y c una variable de cualquier tipo: ....... ...... p: c: p = &c; El operador unario & entrega la dirección del objeto que le sucede.

Operador * p: c: f: ....... ...... 2 3 *p = 2; f =*p + 1; El operador unario *, permite el acceso al contenido de la dirección apuntada por la variable puntero que le sucede. Ofrece un nombre alternativo para la variable apuntada. Sean c y f dos variables enteras, sea p una variable puntero que “apunta a c”. p: c: f: ....... ...... 2 3 *p = 2; f =*p + 1; Es lo mismo que: c = 2; f = c + 1;

Ejemplo int x = 1, y = 2; int *ip; /* ip es puntero a entero */ ip = &x; /* ip apunta al entero x */ y = *ip; /* y es ahora 1 */ *ip = 0; /* x es ahora 0 */

Ejemplo (cont.) int x = 1, y = 2; int *ip; /* ip es puntero a entero */ ip = &x; /* ip apunta al entero x */ y = *ip; /* y es ahora 1 */ *ip = 0; /* x es ahora 0 */ x: y: ...... ....... 1 2 1

Ejemplo (cont.) int x = 1, y = 2; int *ip; /* ip es puntero a entero */ ip = &x; /* ip apunta al entero x */ y = *ip; /* y es ahora 1 */ *ip = 0; /* x es ahora 0 */ ip: x: y: ...... ....... ? 1 2 1

Ejemplo (cont.) int x = 1, y = 2; int *ip; /* ip es puntero a entero */ ip = &x; /* ip apunta al entero x */ y = *ip; /* y es ahora 1 */ *ip = 0; /* x es ahora 0 */ ip: x: y: ...... ....... 1 2 1

Ejemplo (cont.) int x = 1, y = 2; int *ip; /* ip es puntero a entero */ ip = &x; /* ip apunta al entero x */ y = *ip; /* y es ahora 1 */ *ip = 0; /* x es ahora 0 */ El operador unario * es el operador de indirección. ip: x: y: ...... ....... 1 1

Ejemplo (fin) int x = 1, y = 2; int *ip; /* ip es puntero a entero */ ip = &x; /* ip apunta al entero x */ y = *ip; /* y es ahora 1 */ *ip = 0; /* x es ahora 0 */ El operador unario * es el operador de indirección. ip: x: y: ...... ....... 1 1

Aritmética de punteros El contenido de un puntero puede ser modificado realizando operaciones aritméticas enteras simples. float *p; / * un float tiene 4 bytes */ p = p + 2; /* p apunta ahora a una variable 2*4 bytes de distancia del la anterior */ p: ...... ....... 1 byte 1 float

Aritmética de punteros (ejemplo) int x = 0, y = 1, z = 2;/* globales */ int *ip; /* ip es puntero a entero */ ip = &x; /* ip apunta al entero x */ *ip = *ip + 1; /* x es ahora 1 */ ip = ip + 1; /* ip apunta ahora a y */ *ip = *ip + 1; /* y es ahora 2 */ ip = ip + 1; /* ip apunta ahora a z */ *ip = *ip + 1; /* z es ahora 3 */

Aritmética de punteros (cont.) int x = 0, y = 1, z = 2;/* globales */ int *ip; /* ip es puntero a entero */ ip = &x; /* ip apunta al entero x */ *ip = *ip + 1; /* x es ahora 1 */ ip = ip + 1; /* ip apunta ahora a y */ *ip = *ip + 1; /* y es ahora 2 */ ip = ip + 1; /* ip apunta ahora a z */ *ip = *ip + 1; /* z es ahora 3 */ x: y: z: ...... ....... 1 2

Aritmética de punteros (cont.) int x = 0, y = 1, z = 2;/* globales */ int *ip; /* ip es puntero a entero */ ip = &x; /* ip apunta al entero x */ *ip = *ip + 1; /* x es ahora 1 */ ip = ip + 1; /* ip apunta ahora a y */ *ip = *ip + 1; /* y es ahora 2 */ ip = ip + 1; /* ip apunta ahora a z */ *ip = *ip + 1; /* z es ahora 3 */ ip: x: y: z: ...... ....... ? 1 2

Aritmética de punteros (cont.) int x = 0, y = 1, z = 2;/* globales */ int *ip; /* ip es puntero a entero */ ip = &x; /* ip apunta al entero x */ *ip = *ip + 1; /* x es ahora 1 */ ip = ip + 1; /* ip apunta ahora a y */ *ip = *ip + 1; /* y es ahora 2 */ ip = ip + 1; /* ip apunta ahora a z */ *ip = *ip + 1; /* z es ahora 3 */ ip: x: y: z: ...... ....... 1 2

Aritmética de punteros (cont.) int x = 0, y = 1, z = 2;/* globales */ int *ip; /* ip es puntero a entero */ ip = &x; /* ip apunta al entero x */ *ip = *ip + 1; /* x es ahora 1 */ ip = ip + 1; /* ip apunta ahora a y */ *ip = *ip + 1; /* y es ahora 2 */ ip = ip + 1; /* ip apunta ahora a z */ *ip = *ip + 1; /* z es ahora 3 */ ip: x: y: z: ...... ....... 1 1 2

Aritmética de punteros (cont.) Int x = 0, y = 1, z = 2;/* globales */ int *ip; /* ip es puntero a entero */ ip = &x; /* ip apunta al entero x */ *ip = *ip + 1; /* x es ahora 1 */ ip = ip + 1; /* ip apunta ahora a y */ *ip = *ip + 1; /* y es ahora 2 */ ip = ip + 1; /* ip apunta ahora a z */ *ip = *ip + 1; /* z es ahora 3 */ ip: x: y: z: ...... ....... 1 2

Aritmética de punteros (cont.) int x = 0, y = 1, z = 2;/* globales */ int *ip; /* ip es puntero a entero */ ip = &x; /* ip apunta al entero x */ *ip = *ip + 1; /* x es ahora 1 */ ip = ip + 1; /* ip apunta ahora a y */ *ip = *ip + 1; /* y es ahora 2 */ ip = ip + 1; /* ip apunta ahora a z */ *ip = *ip + 1; /* z es ahora 3 */ ip: x: y: z: ...... ....... 2 2

Aritmética de punteros (cont.) int x = 0, y = 1, z = 2;/* globales */ int *ip; /* ip es puntero a entero */ ip = &x; /* ip apunta al entero x */ *ip = *ip + 1; /* x es ahora 1 */ ip = ip + 1; /* ip apunta ahora a y */ *ip = *ip + 1; /* y es ahora 2 */ ip = ip + 1; /* ip apunta ahora a z */ *ip = *ip + 1; /* z es ahora 3 */ ip: x: y: z: ...... ....... 2 2

Aritmética de punteros (fin) int x = 0, y = 1, z = 2;/* globales */ int *ip; /* ip es puntero a entero */ ip = &x; /* ip apunta al entero x */ *ip = *ip + 1; /* x es ahora 1 */ ip = ip + 1; /* ip apunta ahora a y */ *ip = *ip + 1; /* y es ahora 2 */ ip = ip + 1; /* ip apunta ahora a z */ *ip = *ip + 1; /* z es ahora 3 */ ip: x: y: z: ...... ....... 2 3

Otra imagen de punteros ip: x: y: z: ...... ....... 2 3

Otra imágen de punteros ip x: y: z: ........................ 2 3

Intercambio sin error #include <stdio.h> void intercambio(int *, int *); /* prototipo */ main(){ int a=1,b=2; printf("a=%d b=%d\n",a,b); intercambio(&a,&b); /* llamada */ return 0; } void intercambio(int *x, int *y){ /* declaración formal */ int temp; temp=*x; // *x, *y son nombres alternativos de a y b *x=*y; *y=temp; 1