Programación III Clase 09 Apuntadores. Declaración de Punteros Declaración: type* id; Ejemplo: int* ptr; ptr contendrá entonces una dirección a un entero.

Slides:



Advertisements
Presentaciones similares
Abstracción de Datos Arrays.
Advertisements

Repaso para la construcción del intérprete 2012
Elementos básicos del Lenguaje
Programación I Teoría I
Programación I Teoría III
Direcciones, Arreglos y Argumentos de Funciones
Tipos de Datos Básicos y Estructurados
Punteros Universidad Nacional Mayor de San Marcos

Informática I Código Semestre Para Ingeniería Electrónica e Ingeniería de Telecomunicaciones Profesor: Sebastián Isaza.
Funcionamiento, programación
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.
SOBRECARGA DE FUNCIONES
Estructuras de Datos Punteros y algo más.
Unidad 3 Punteros.
¿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.
Cont. Arbol Binario de Búsqueda (2). Sobre los recorridos Las versiones recursivas de los recorridos son costosas debido a la gran cantidad de llamadas.
Diseño de algoritmos “Punteros”
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
Arreglos.
Capítulo 5. Punteros y Cadenas de Caracteres
Programación III Clase 06 Funciones.
APUNTADORES EN C. MENU DEL DIA Repaso clase anterior Apuntadores. Eso pa que? Solución al problema: Funciones. Ventajas de trabajar un programa usando.
Índice. Revisando conceptos acerca de la memoria.
Programación III Clase 08 Arreglos.
Cátedra de COMPUTACIÓN FACULTAD DE INGENIERÍA - UNA La mejor manera de aprender Programación es PROGRAMANDO !!!!!! CLASE Nro. 2.
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.
Administración de Proyectos de desarrollo de Software Ciclo de vida de un proyecto Enfoque moderno Temas Componentes Directivas Declaraciones globales.
Informática Ingeniería en Electrónica y Automática Industrial
El lenguaje de programación C - Vectores y matrices -
1 Polimorfismo y Métodos Virtuales Agustín J. González ELO329.
1 Asignación Dinámica de Memoria Agustín J. González Versión original de Kip Irvine ELO 329.
Manejo de Punteros y objetos en memoria dinámica en C++
Dinamismo y Contenedores Facultad de Ciencias Exactas y Naturales Universidad de Buenos Aires (C++ Avanzado) Depto. de Computación Algoritmos y Estructuras.
Elementos básicos del lenguaje
Programación de Sistemas
FUNCIONES Conceptos básicos. Retorno de una función Clases de funciones. Paso de parámetros. Funciones y arrays.
Clase 10 Apuntadores & Memoria Dinámica
Informática Ingeniería en Electrónica y Automática Industrial
Un ejemplo de uso de estos operadores: int a, b, c; a = 0xd3; b = 0xf5; c = 0x1e; d =a |b; d =b &c; d =a ^c; d = ~c; d =c 4 Equivale a
Programación en C para electrónicos
Punteros.
Elementos básicos del lenguaje
PUNTEROS Y REFERENCIAS
Clase #05 switch/case, Ejercicio
APUNTADORES.
1 Definición y Conversión de datos Agustín J. González ELO-329.
Los punteros Programación modular.
IDENTIFICADORES Un identificador es un "nombre" que nos permite dirigirnos específicamente a una de las entidades propias del lenguaje, es decir, son los.
Matrices Prof. Flor Narciso Departamento de Computación
FUNDAMENTOS DE PROGRAMACIÓN
Unidad II Aplicaciones con Arreglos en Java y C++
Programación III Clase #03 Operadores. Expresiones Es cualquier cosa que retorne un valor. En C++ CASI todo son expresiones. Ejemplo: –5 –3 + 2 Las expresiones.
Computación II Capitulo VII Punteros. Presentación de la unidad Objetivos: –Ser capaces de utilizar punteros. –Comprender las relaciones entre punteros,
1 Asignación Dinámica de Memoria Agustín J. González ELO 329.
Polimorfismo y Métodos Virtuales Agustín J. González ELO329.
Algoritmo.
PUNTEROS EN EL LENGUAJE C
Arreglos: Vectores Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes.
Laboratorio de programación
Objetivos del tema. Hemos visto lo que es la estructura de un programa, los datos, que esos datos en realidad se convierten en variables de distinto.
 Las funciones son un conjunto de instrucciones que realizan una tarea específica. En general toman unos valores de entrada, llamados parámetros y proporcionan.
MEMORIA DINÁMICA.
1 Definición y Conversión de datos Agustín J. González ELO-329.
Algunas Características de C++ no presentes en C Agustín J. González ELO-329.
PROF. RAFAEL MONTENEGRO B. UNELLEZ-APURE Introducci Ó n a los Arreglos (“arrays”) en C++
Lenguaje de Programación II Prof. Rafael Montenegro B. Carrera: T.S.U en Informática Periodo: 2014-I.
Transcripción de la presentación:

Programación III Clase 09 Apuntadores

Declaración de Punteros Declaración: type* id; Ejemplo: int* ptr; ptr contendrá entonces una dirección a un entero.

Operadores con Punteros OperadorUso &object Retorna la dirección de object (dirección de) *ptr Retorna a lo que apunta ptr (indirección)

Ejemplo de Operadores int normal = 10; int* ptr; ptr = &normal; *ptr = 15; cout<<ptr<<endl; cout<<normal<<endl; 0x3A28 normal 10 0x3F3A ptr 15 0x3A28 15

Retomando Arreglos En la siguiente declaración: int ar[4]; ¿Cuál será el tipo de ar ? Por lo tanto se podría hacer: int* p = NULL; p = ar;

Ejemplo double v[] = {2.5, 5.0, 7.5, 10.0}; double* pd = NULL; pd = v; 0xF150 pd ‘\0’ 0xF012 0xE412 v 0xF xF0120xF01A0xF0220xF02A

Aritmética de Punteros double v[] = {2.5, 5.0, 7.5, 10.0}; double* pd = v; for (int i=0; i<4; i++){ cout << *pd << endl; pd++; } 0xF150 pd 0xF012 0xE412 v 0xF xF0120xF01A0xF0220xF02A 0xA124 i 0 10xF01A xF02220xF02A30xF0324

Aritmética de Punteros (cont) Cuando a un double* se le suma 1, no se le suma 1 a la dirección, sino que avanza una casilla de double completa (8 bytes). Es por esta razón que pd que vale 0xF012 inicialmente al operar pd++ su valor es de 0xF01A. (Ojo la suma es hexadecimal) Ahora bien, en el ejemplo anterior: ¡ pd quedó apuntando afuera del arreglo!

Aritmética de Punteros (cont) double v[] = {2.5, 5.0, 7.5, 10.0}; double* pd = v; for (int i=0; i<4; i++) cout << *(pd+i) << endl; 0xF150 pd 0xF012 0xE412 v 0xF xF0120xF01A0xF0220xF02A 0xA124 i

Aritmética de Punteros (cont) Al cambiar la instrucción de pd++, por *(pd+i) se logra imprimir todos los elementos del arreglo utilizando aritmética de punteros, pero esta vez sin cambiar pd en el proceso.

Aritmética de Punteros (cont) double v[] = {2.5, 5.0, 7.5, 10.0}; double* pd = v; for (int i=0; i<4; i++) cout << pd[i] << endl; 0xF150 pd 0xF012 0xE412 v 0xF xF0120xF01A0xF0220xF02A 0xA124 i

Aritmética de Punteros (cont) CONCLUSIÓN: Esta es la manera en que el compilador interpreta el operador de subíndice de arreglos.

Ahora con Matrices Por ejemplo: int m[2][3] = {{1,3,5},{2,4,6}}; ¿Cuál es el tipo de m ? ¿Cuál es el tipo de m[0] ? ¿Cuál es el tipo de m[0][0] ? Entonces se podría: int** p = m; int* t = m[0]; //Algunos compiladores requieren conversión.

Con Matrices… int m[2][3] = {{1,3,5},{2,4,6}}; int* p = m[0]; for (int i=0; i<6; i++) cout << p[i] << endl; ¿Cuál será la salida de este segmento de código?