SlideShare una empresa de Scribd logo
1 de 20
¿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 hay que confundir una dirección de memoria con el contenido de esa dirección de memoria. int x = 25; Dirección  1502  1504  1506  1508  La  dirección  de la variable x (&x) es 1502 El  contenido  de la variable x es 25  ... ... ... ... 25 ... ...
Las  direcciones de memoria  dependen de la arquitectura del ordenador y de la gestión que  el sistema operativo  haga de ella. En lenguaje  ensamblador  se debe indicar numéricamente la posición física de memoria en que queremos almacenar un dato. De ahí que este lenguaje dependa tanto de la máquina en la que se aplique. En  C  no debemos,  ni podemos , indicar numéricamente la dirección de memoria, si no que utilizamos una etiqueta que conocemos como  variable . Lo que nos interesa es almacenar un dato, y no la localización exacta de ese dato en memoria.
Una variable puntero se declara como todas las variables. Debe ser del mismo tipo que la variable apuntada. Su identificador va precedido de un asterisco (*): int *punt; Es una variable puntero que apunta a variable que contiene un dato de tipo entero llamada punt. char *car: Es un puntero a variable de tipo carácter. long float *num; float *mat[5];  // . . . Un puntero tiene su  propia dirección  de memoria:  &punt &car
Es decir: hay  tantos  tipos  de  punteros  como  tipos de datos,  aunque  también  pueden  declararse  punteros  a estructuras más complejas (funciones, struct, ficheros...) e incluso punteros vacíos (void ) y punteros nulos (NULL). Declaración de variables puntero: Sea un fragmento de programa en C: char dato;  //variable que almacenará un carácter. char *punt;  //declaración de puntero a carácter. punt = &dato;  //en la variable punt  guardamos la dirección   //  de memoria  de la variable dato; punt apunta   // a dato .  Ambas son del mismo tipo,  char.
int *punt = NULL, var = 14; punt = &var; printf(“%#X,  %#X”, punt, &var)  //la misma salida: dirección printf(“%d,  %d”, *punt, var);  //salida:  14,  14 Hay que tener cuidado con las direcciones apuntadas: printf(“%d,  %d”, *(punt+1), var+1); *(punt + 1)  repesenta el valor contenida en la dirección de memoria aumentada en una posición (int=2bytes), que será un valor no deseado. Sin embargo  var+1  representa el valor 15. punt + 1  representa lo mismo que  &var + 1  (avance en la dirección de memoria de var).
Al trabajar con punteros se emplean dos operadores específicos:     Operador de  dirección :  &  Representa la dirección de memoria de la variable que le sigue: &fnum  representa la dirección de fnum.      Operador de  contenido o  indirección :  * El operador  *  aplicado  al nombre de un puntero indica  el  valor de la variable apuntada: float  altura = 26.92,  *apunta; apunta = &altura; //inicialización del puntero
float  altura = 26.92, *apunta; apunta = &altura; //inicialización del puntero .printf(“%f”, altura);  //salida 26.92 .printf(“%f”, *apunta); No se debe confundir el operador  *  en la declaración del puntero: int  * p; Con el operador   *   en las instrucciones:  .  * p = 27;  printf(“Contenido = %d”, *p);
Veamos con otro ejemplo en C la diferencia entre todos estos conceptos  void main(void) { int a, b, c, *p1, *p2; void *p; p1 = &a;  // Paso 1. La dirección de a es asignada a p1 *p1 = 1;  // Paso 2. p1 (a) es igual a 1. Equivale a a = 1; p2 = &b;  // Paso 3. La dirección de b es asignada a p2 *p2 = 2;  // Paso 4. p2 (b) es igual a 2. Equivale a b = 2; p1 = p2;  // Paso 5. El valor del p1 = p2 *p1 = 0;  // Paso 6. b = 0
p2 = &c;  // Paso 7. La dirección de c es asignada a p2 *p2 = 3;  // Paso 8. c = 3 printf("%d %d %d", a, b, c);  // Paso 9. ¿Qué se imprime? p = &p1;  // Paso 10. p contiene la dirección de p1 *p = p2;  // Paso 11. p1= p2; *p1 = 1;  // Paso 12. c = 1 printf("%d %d %d", a, b, c);  // Paso 13. ¿Qué se imprime?  }
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],< Almacenamiento > < Tipo >   *  < Nombre > = < Expresión >
Inicialización de punteros(II): 2) El nombre de un array de almacenamiento static o extern se transforma según la expresión: a)  float mat[12]; float *punt = mat; b) float mat[12]; float *punt = &mat[0];  3) Un “cast”  puntero a puntero: int *punt = (int *) 123.456; Inicializa el puntero con el entero.
Inicialización de punteros(III): 4) Un puntero a carácter puede inicializarse en la forma: char *cadena = Esto es una cadena”;   5) Se pueden sumar o restar valores enteros a las direcciones de memoria en la forma: (aritmética de punteros) static int x; int *punt = &x+2, *p = &x-1; 6) Equivalencia: Dos tipos definidos como punteros a objeto P y puntero a objeto Q son  equivalentes  sólo si P y Q son del  mismo tipo.  Aplicado a matrices: nombre_puntero = nombre_matriz;
PUNTEROS Y ARRAYS Sea el array de una dimensión: int mat[ ] = {2, 16, -4, 29, 234, 12, 0, 3}; en el que cada elemento, por ser tipo int, ocupa dos bytes de memoria. Suponemos que la dirección de memoria del primer elemento, es 1500: &mat[0] es 1500 &mat[1] será 1502 &mat[7] será  1514
PUNTEROS Y ARRAYS int mat[ ] = {2, 16, -4, 29, 234, 12, 0, 3}; En total los 8 elementos ocupan 16 bytes. Podemos representar las direcciones de memoria que ocupan los elementos del array , los datos que contiene y las posiciones del array en la forma:  Dirección  1502  1504  1506  1508  1510  1512  1514 Elemento  mat[1]  mat[2]  mat[3]  mat[4]  mat[5]  mat[6]  mat[7] 3 0 12 234 29 -4 16 2
Dirección  1502  1504  1506  1508  1510  1512  1514 El acceso podemos hacerlo mediante el índice: x = mat[3]+mat[5];  // x = 29 + 12  para sumar los elementos de la cuarta y sexta posiciones. Como hemos dicho que podemos acceder por posición y por dirección: ¿Es lo mismo &mat[0] y mat? Y &mat[1] = mat++ ? Veamos el código de un ejemplo: Elemento  mat[1]  mat[2]  mat[3]  mat[4]  mat[5]  mat[6]  mat[7] 16 3 0 12 234 29 -4 2
#include <stdio.h> #include <conio.h> int mat[5]={ 2, 16, -4, 29, 234, 12, 0, 3 }, i;  //declaradas como globales void main()   { printf(&quot;%d&quot;, &mat[0]);   //resultado: 1500 (dirección de mem) printf(&quot;% p &quot;, mat);  //resultado: 1500 ( &quot;  &quot;  &quot;  &quot;  &quot;  ) i++;  //i=1 printf(&quot;% p &quot;, mat+i);  //resultado: 1502 ( &quot;  &quot;  &quot;  &quot;  &quot;  ) printf(&quot;%d&quot;, *(mat+i));   //resultado: 1 6  (valor de mat[1] o valor getch();  }     //en la dirección 1502
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Aplicando los puntos anteriores, podemos decir que  char * ( * ( *var ) (   ) ) [10] 7  6  4  2 1  3  5   La interpretación es: 1.  La variable var es declarada como 2.  un puntero a 3.  una función que devuelve 4.  un puntero a 5 . un array de 10 elementos, los cuales son  6.  punteros a  7.  objetos de tipo char.
Fundamentos de Programación ESPE

Más contenido relacionado

La actualidad más candente

Arreglos En Una Dimension
Arreglos En Una DimensionArreglos En Una Dimension
Arreglos En Una Dimensionyperalta
 
Ejercicios resueltos en el Laboratorio de estructuras struct registros
Ejercicios resueltos en el Laboratorio de estructuras struct registrosEjercicios resueltos en el Laboratorio de estructuras struct registros
Ejercicios resueltos en el Laboratorio de estructuras struct registrosrasave
 
Manual Netbeans Bases Datos2
Manual Netbeans Bases Datos2Manual Netbeans Bases Datos2
Manual Netbeans Bases Datos2mtemarialuisa
 
Pila dinamica y pila estatica
Pila dinamica y pila estaticaPila dinamica y pila estatica
Pila dinamica y pila estaticaJoeCorp
 
Heap sort (Monticulos)
Heap sort (Monticulos)Heap sort (Monticulos)
Heap sort (Monticulos)leidy2220
 
Memoria dinamica
Memoria dinamicaMemoria dinamica
Memoria dinamicagusolis93
 
Metodos de-ordenamiento
Metodos de-ordenamientoMetodos de-ordenamiento
Metodos de-ordenamientodeff000001
 
Estructura de datos: lista, pilas y colas
Estructura de datos: lista, pilas y colasEstructura de datos: lista, pilas y colas
Estructura de datos: lista, pilas y colasHuascar Génere
 
Funcionamiento de un pila
Funcionamiento de un pilaFuncionamiento de un pila
Funcionamiento de un pilajefer
 
1.1.5 Gestion de Memoria dinámica con TDA.pptx
1.1.5 Gestion de Memoria dinámica con TDA.pptx1.1.5 Gestion de Memoria dinámica con TDA.pptx
1.1.5 Gestion de Memoria dinámica con TDA.pptxFernando Solis
 
Ejemplos de algoritmos con estructuras repetitivas
Ejemplos de algoritmos con estructuras repetitivasEjemplos de algoritmos con estructuras repetitivas
Ejemplos de algoritmos con estructuras repetitivasJunior Solano de Arco
 
Ejercicio sql tienda informatica (1)
Ejercicio sql tienda informatica (1)Ejercicio sql tienda informatica (1)
Ejercicio sql tienda informatica (1)Jsrfs Montemayor
 

La actualidad más candente (20)

Arreglos En Una Dimension
Arreglos En Una DimensionArreglos En Una Dimension
Arreglos En Una Dimension
 
Arreglos
ArreglosArreglos
Arreglos
 
Estructuras en c++
Estructuras en c++Estructuras en c++
Estructuras en c++
 
Ejercicios resueltos en el Laboratorio de estructuras struct registros
Ejercicios resueltos en el Laboratorio de estructuras struct registrosEjercicios resueltos en el Laboratorio de estructuras struct registros
Ejercicios resueltos en el Laboratorio de estructuras struct registros
 
Pilas y colas
Pilas y colasPilas y colas
Pilas y colas
 
Colas o Filas en Java
Colas o Filas en JavaColas o Filas en Java
Colas o Filas en Java
 
Manual Netbeans Bases Datos2
Manual Netbeans Bases Datos2Manual Netbeans Bases Datos2
Manual Netbeans Bases Datos2
 
Pila dinamica y pila estatica
Pila dinamica y pila estaticaPila dinamica y pila estatica
Pila dinamica y pila estatica
 
Quicksort
QuicksortQuicksort
Quicksort
 
C pointers
C pointersC pointers
C pointers
 
Heap sort (Monticulos)
Heap sort (Monticulos)Heap sort (Monticulos)
Heap sort (Monticulos)
 
Memoria dinamica
Memoria dinamicaMemoria dinamica
Memoria dinamica
 
Metodos de-ordenamiento
Metodos de-ordenamientoMetodos de-ordenamiento
Metodos de-ordenamiento
 
Estructuras de datos lineales
Estructuras de datos linealesEstructuras de datos lineales
Estructuras de datos lineales
 
Memoria dinamica
Memoria dinamicaMemoria dinamica
Memoria dinamica
 
Estructura de datos: lista, pilas y colas
Estructura de datos: lista, pilas y colasEstructura de datos: lista, pilas y colas
Estructura de datos: lista, pilas y colas
 
Funcionamiento de un pila
Funcionamiento de un pilaFuncionamiento de un pila
Funcionamiento de un pila
 
1.1.5 Gestion de Memoria dinámica con TDA.pptx
1.1.5 Gestion de Memoria dinámica con TDA.pptx1.1.5 Gestion de Memoria dinámica con TDA.pptx
1.1.5 Gestion de Memoria dinámica con TDA.pptx
 
Ejemplos de algoritmos con estructuras repetitivas
Ejemplos de algoritmos con estructuras repetitivasEjemplos de algoritmos con estructuras repetitivas
Ejemplos de algoritmos con estructuras repetitivas
 
Ejercicio sql tienda informatica (1)
Ejercicio sql tienda informatica (1)Ejercicio sql tienda informatica (1)
Ejercicio sql tienda informatica (1)
 

Similar a Punteros

Programación en c (iii parte)
Programación en c (iii parte)Programación en c (iii parte)
Programación en c (iii parte)MarielaCuriel
 
Luis hernandez 22310621
Luis hernandez   22310621Luis hernandez   22310621
Luis hernandez 22310621Luis Miguel
 
Apuntadorkeurjeh4jj4by un 4hh4j4u4jj4h4y4jh4
Apuntadorkeurjeh4jj4by un 4hh4j4u4jj4h4y4jh4Apuntadorkeurjeh4jj4by un 4hh4j4u4jj4h4y4jh4
Apuntadorkeurjeh4jj4by un 4hh4j4u4jj4h4y4jh4hassanbadredun
 
Clase 11- fundamentos de la programacion
Clase 11- fundamentos de la programacionClase 11- fundamentos de la programacion
Clase 11- fundamentos de la programaciondiego MC
 
PUNTEROS (APUNTADORES) EN C++
PUNTEROS (APUNTADORES) EN C++PUNTEROS (APUNTADORES) EN C++
PUNTEROS (APUNTADORES) EN C++die_dex
 
Guia De Practica 3
Guia De Practica 3Guia De Practica 3
Guia De Practica 3louis
 
Apuntadores y direccionamiento
Apuntadores y direccionamientoApuntadores y direccionamiento
Apuntadores y direccionamientoSergio Ramos
 
Computacion punteros
Computacion punterosComputacion punteros
Computacion punterosManuel
 
Tema 8 www.fresymetal.com
Tema 8 www.fresymetal.comTema 8 www.fresymetal.com
Tema 8 www.fresymetal.comFresyMetal
 
Lenguajec diapositivas
Lenguajec diapositivasLenguajec diapositivas
Lenguajec diapositivastacubomx
 
Implementacion de punteros
Implementacion de punterosImplementacion de punteros
Implementacion de punterosKareliaRivas
 
Lenguajec 1
Lenguajec 1Lenguajec 1
Lenguajec 1joeshego
 
Apuntadores
ApuntadoresApuntadores
Apuntadoresluisabn
 

Similar a Punteros (20)

Programación en c (iii parte)
Programación en c (iii parte)Programación en c (iii parte)
Programación en c (iii parte)
 
Luis hernandez 22310621
Luis hernandez   22310621Luis hernandez   22310621
Luis hernandez 22310621
 
Apuntadorkeurjeh4jj4by un 4hh4j4u4jj4h4y4jh4
Apuntadorkeurjeh4jj4by un 4hh4j4u4jj4h4y4jh4Apuntadorkeurjeh4jj4by un 4hh4j4u4jj4h4y4jh4
Apuntadorkeurjeh4jj4by un 4hh4j4u4jj4h4y4jh4
 
Clase 11- fundamentos de la programacion
Clase 11- fundamentos de la programacionClase 11- fundamentos de la programacion
Clase 11- fundamentos de la programacion
 
PUNTEROS (APUNTADORES) EN C++
PUNTEROS (APUNTADORES) EN C++PUNTEROS (APUNTADORES) EN C++
PUNTEROS (APUNTADORES) EN C++
 
Guia De Practica 3
Guia De Practica 3Guia De Practica 3
Guia De Practica 3
 
Apuntadores y direccionamiento
Apuntadores y direccionamientoApuntadores y direccionamiento
Apuntadores y direccionamiento
 
Computacion punteros
Computacion punterosComputacion punteros
Computacion punteros
 
Tipos de datos en C
Tipos de datos en CTipos de datos en C
Tipos de datos en C
 
Tema 8 www.fresymetal.com
Tema 8 www.fresymetal.comTema 8 www.fresymetal.com
Tema 8 www.fresymetal.com
 
Apunfun1
Apunfun1Apunfun1
Apunfun1
 
Ejercicios punteros cadenas-vectores
Ejercicios punteros cadenas-vectoresEjercicios punteros cadenas-vectores
Ejercicios punteros cadenas-vectores
 
Solucion ejercicios punteros cadenas-vectores
Solucion ejercicios punteros cadenas-vectoresSolucion ejercicios punteros cadenas-vectores
Solucion ejercicios punteros cadenas-vectores
 
1 Tipos De Datos Ejercicios
1 Tipos De Datos Ejercicios1 Tipos De Datos Ejercicios
1 Tipos De Datos Ejercicios
 
C sharp intro0
C sharp intro0C sharp intro0
C sharp intro0
 
Lenguajec diapositivas
Lenguajec diapositivasLenguajec diapositivas
Lenguajec diapositivas
 
Implementacion de punteros
Implementacion de punterosImplementacion de punteros
Implementacion de punteros
 
Teoria punteros
Teoria punterosTeoria punteros
Teoria punteros
 
Lenguajec 1
Lenguajec 1Lenguajec 1
Lenguajec 1
 
Apuntadores
ApuntadoresApuntadores
Apuntadores
 

Más de JJ (John John) 4601 (20)

Consentimiento inf. Usach
Consentimiento inf.   UsachConsentimiento inf.   Usach
Consentimiento inf. Usach
 
Consntimiento informado -1
Consntimiento informado -1Consntimiento informado -1
Consntimiento informado -1
 
Excelencia académica tec monterrey cambridge
Excelencia académica tec monterrey cambridgeExcelencia académica tec monterrey cambridge
Excelencia académica tec monterrey cambridge
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Información
InformaciónInformación
Información
 
presentación
presentación presentación
presentación
 
Boletín estadístico no 04 2014 ventas vehículos importados comercio 2013
Boletín estadístico no 04 2014 ventas vehículos importados comercio 2013Boletín estadístico no 04 2014 ventas vehículos importados comercio 2013
Boletín estadístico no 04 2014 ventas vehículos importados comercio 2013
 
Estadística
EstadísticaEstadística
Estadística
 
Sistemas Operativos Software
Sistemas Operativos SoftwareSistemas Operativos Software
Sistemas Operativos Software
 
Introducción Computación
Introducción ComputaciónIntroducción Computación
Introducción Computación
 
Placa base
Placa basePlaca base
Placa base
 
Presentación
PresentaciónPresentación
Presentación
 
Ap1 ap2 nom_g6
Ap1 ap2 nom_g6Ap1 ap2 nom_g6
Ap1 ap2 nom_g6
 
Declaración de punteros
Declaración de punterosDeclaración de punteros
Declaración de punteros
 
Funciones
FuncionesFunciones
Funciones
 
Introducción FundamProgramación
Introducción FundamProgramaciónIntroducción FundamProgramación
Introducción FundamProgramación
 
Libro compartido para trabajar en colaboración
Libro compartido para trabajar en colaboraciónLibro compartido para trabajar en colaboración
Libro compartido para trabajar en colaboración
 
Teoria De Grafos
Teoria De GrafosTeoria De Grafos
Teoria De Grafos
 
Docentes, Por: JJ
Docentes, Por: JJDocentes, Por: JJ
Docentes, Por: JJ
 

Último

Informatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos BásicosInformatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos BásicosCesarFernandez937857
 
GLOSAS Y PALABRAS ACTO 2 DE ABRIL 2024.docx
GLOSAS  Y PALABRAS ACTO 2 DE ABRIL 2024.docxGLOSAS  Y PALABRAS ACTO 2 DE ABRIL 2024.docx
GLOSAS Y PALABRAS ACTO 2 DE ABRIL 2024.docxAleParedes11
 
cortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahuacortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahuaDANNYISAACCARVAJALGA
 
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxjosetrinidadchavez
 
Lecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdadLecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdadAlejandrino Halire Ccahuana
 
6° SEM30 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
6° SEM30 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx6° SEM30 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
6° SEM30 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docxCeciliaGuerreroGonza1
 
La Función tecnológica del tutor.pptx
La  Función  tecnológica  del tutor.pptxLa  Función  tecnológica  del tutor.pptx
La Función tecnológica del tutor.pptxJunkotantik
 
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdfDemetrio Ccesa Rayme
 
Factores ecosistemas: interacciones, energia y dinamica
Factores ecosistemas: interacciones, energia y dinamicaFactores ecosistemas: interacciones, energia y dinamica
Factores ecosistemas: interacciones, energia y dinamicaFlor Idalia Espinoza Ortega
 
Historia y técnica del collage en el arte
Historia y técnica del collage en el arteHistoria y técnica del collage en el arte
Historia y técnica del collage en el arteRaquel Martín Contreras
 
Movimientos Precursores de La Independencia en Venezuela
Movimientos Precursores de La Independencia en VenezuelaMovimientos Precursores de La Independencia en Venezuela
Movimientos Precursores de La Independencia en Venezuelacocuyelquemao
 
EXPECTATIVAS vs PERSPECTIVA en la vida.
EXPECTATIVAS vs PERSPECTIVA  en la vida.EXPECTATIVAS vs PERSPECTIVA  en la vida.
EXPECTATIVAS vs PERSPECTIVA en la vida.DaluiMonasterio
 
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARONARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFAROJosé Luis Palma
 
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzel CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzprofefilete
 

Último (20)

Informatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos BásicosInformatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos Básicos
 
GLOSAS Y PALABRAS ACTO 2 DE ABRIL 2024.docx
GLOSAS  Y PALABRAS ACTO 2 DE ABRIL 2024.docxGLOSAS  Y PALABRAS ACTO 2 DE ABRIL 2024.docx
GLOSAS Y PALABRAS ACTO 2 DE ABRIL 2024.docx
 
cortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahuacortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahua
 
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
 
Razonamiento Matemático 1. Deta del año 2020
Razonamiento Matemático 1. Deta del año 2020Razonamiento Matemático 1. Deta del año 2020
Razonamiento Matemático 1. Deta del año 2020
 
Lecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdadLecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdad
 
6° SEM30 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
6° SEM30 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx6° SEM30 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
6° SEM30 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
 
La Función tecnológica del tutor.pptx
La  Función  tecnológica  del tutor.pptxLa  Función  tecnológica  del tutor.pptx
La Función tecnológica del tutor.pptx
 
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
 
Factores ecosistemas: interacciones, energia y dinamica
Factores ecosistemas: interacciones, energia y dinamicaFactores ecosistemas: interacciones, energia y dinamica
Factores ecosistemas: interacciones, energia y dinamica
 
La Trampa De La Felicidad. Russ-Harris.pdf
La Trampa De La Felicidad. Russ-Harris.pdfLa Trampa De La Felicidad. Russ-Harris.pdf
La Trampa De La Felicidad. Russ-Harris.pdf
 
Unidad 4 | Teorías de las Comunicación | MCDI
Unidad 4 | Teorías de las Comunicación | MCDIUnidad 4 | Teorías de las Comunicación | MCDI
Unidad 4 | Teorías de las Comunicación | MCDI
 
Historia y técnica del collage en el arte
Historia y técnica del collage en el arteHistoria y técnica del collage en el arte
Historia y técnica del collage en el arte
 
Movimientos Precursores de La Independencia en Venezuela
Movimientos Precursores de La Independencia en VenezuelaMovimientos Precursores de La Independencia en Venezuela
Movimientos Precursores de La Independencia en Venezuela
 
Repaso Pruebas CRECE PR 2024. Ciencia General
Repaso Pruebas CRECE PR 2024. Ciencia GeneralRepaso Pruebas CRECE PR 2024. Ciencia General
Repaso Pruebas CRECE PR 2024. Ciencia General
 
EXPECTATIVAS vs PERSPECTIVA en la vida.
EXPECTATIVAS vs PERSPECTIVA  en la vida.EXPECTATIVAS vs PERSPECTIVA  en la vida.
EXPECTATIVAS vs PERSPECTIVA en la vida.
 
Power Point: "Defendamos la verdad".pptx
Power Point: "Defendamos la verdad".pptxPower Point: "Defendamos la verdad".pptx
Power Point: "Defendamos la verdad".pptx
 
Defendamos la verdad. La defensa es importante.
Defendamos la verdad. La defensa es importante.Defendamos la verdad. La defensa es importante.
Defendamos la verdad. La defensa es importante.
 
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARONARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
 
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzel CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
 

Punteros

  • 1.
  • 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 de otra variable. No hay que confundir una dirección de memoria con el contenido de esa dirección de memoria. int x = 25; Dirección 1502 1504 1506 1508 La dirección de la variable x (&x) es 1502 El contenido de la variable x es 25 ... ... ... ... 25 ... ...
  • 3. Las direcciones de memoria dependen de la arquitectura del ordenador y de la gestión que el sistema operativo haga de ella. En lenguaje ensamblador se debe indicar numéricamente la posición física de memoria en que queremos almacenar un dato. De ahí que este lenguaje dependa tanto de la máquina en la que se aplique. En C no debemos, ni podemos , indicar numéricamente la dirección de memoria, si no que utilizamos una etiqueta que conocemos como variable . Lo que nos interesa es almacenar un dato, y no la localización exacta de ese dato en memoria.
  • 4. Una variable puntero se declara como todas las variables. Debe ser del mismo tipo que la variable apuntada. Su identificador va precedido de un asterisco (*): int *punt; Es una variable puntero que apunta a variable que contiene un dato de tipo entero llamada punt. char *car: Es un puntero a variable de tipo carácter. long float *num; float *mat[5]; // . . . Un puntero tiene su propia dirección de memoria: &punt &car
  • 5. Es decir: hay tantos tipos de punteros como tipos de datos, aunque también pueden declararse punteros a estructuras más complejas (funciones, struct, ficheros...) e incluso punteros vacíos (void ) y punteros nulos (NULL). Declaración de variables puntero: Sea un fragmento de programa en C: char dato; //variable que almacenará un carácter. char *punt; //declaración de puntero a carácter. punt = &dato; //en la variable punt guardamos la dirección // de memoria de la variable dato; punt apunta // a dato . Ambas son del mismo tipo, char.
  • 6. int *punt = NULL, var = 14; punt = &var; printf(“%#X, %#X”, punt, &var) //la misma salida: dirección printf(“%d, %d”, *punt, var); //salida: 14, 14 Hay que tener cuidado con las direcciones apuntadas: printf(“%d, %d”, *(punt+1), var+1); *(punt + 1) repesenta el valor contenida en la dirección de memoria aumentada en una posición (int=2bytes), que será un valor no deseado. Sin embargo var+1 representa el valor 15. punt + 1 representa lo mismo que &var + 1 (avance en la dirección de memoria de var).
  • 7. Al trabajar con punteros se emplean dos operadores específicos:  Operador de dirección : & Representa la dirección de memoria de la variable que le sigue: &fnum representa la dirección de fnum.  Operador de contenido o indirección : * El operador * aplicado al nombre de un puntero indica el valor de la variable apuntada: float altura = 26.92, *apunta; apunta = &altura; //inicialización del puntero
  • 8. float altura = 26.92, *apunta; apunta = &altura; //inicialización del puntero .printf(“%f”, altura); //salida 26.92 .printf(“%f”, *apunta); No se debe confundir el operador * en la declaración del puntero: int * p; Con el operador * en las instrucciones: . * p = 27; printf(“Contenido = %d”, *p);
  • 9. Veamos con otro ejemplo en C la diferencia entre todos estos conceptos void main(void) { int a, b, c, *p1, *p2; void *p; p1 = &a; // Paso 1. La dirección de a es asignada a p1 *p1 = 1; // Paso 2. p1 (a) es igual a 1. Equivale a a = 1; p2 = &b; // Paso 3. La dirección de b es asignada a p2 *p2 = 2; // Paso 4. p2 (b) es igual a 2. Equivale a b = 2; p1 = p2; // Paso 5. El valor del p1 = p2 *p1 = 0; // Paso 6. b = 0
  • 10. p2 = &c; // Paso 7. La dirección de c es asignada a p2 *p2 = 3; // Paso 8. c = 3 printf(&quot;%d %d %d&quot;, a, b, c); // Paso 9. ¿Qué se imprime? p = &p1; // Paso 10. p contiene la dirección de p1 *p = p2; // Paso 11. p1= p2; *p1 = 1; // Paso 12. c = 1 printf(&quot;%d %d %d&quot;, a, b, c); // Paso 13. ¿Qué se imprime? }
  • 11.
  • 12. Inicialización de punteros(II): 2) El nombre de un array de almacenamiento static o extern se transforma según la expresión: a) float mat[12]; float *punt = mat; b) float mat[12]; float *punt = &mat[0]; 3) Un “cast” puntero a puntero: int *punt = (int *) 123.456; Inicializa el puntero con el entero.
  • 13. Inicialización de punteros(III): 4) Un puntero a carácter puede inicializarse en la forma: char *cadena = Esto es una cadena”; 5) Se pueden sumar o restar valores enteros a las direcciones de memoria en la forma: (aritmética de punteros) static int x; int *punt = &x+2, *p = &x-1; 6) Equivalencia: Dos tipos definidos como punteros a objeto P y puntero a objeto Q son equivalentes sólo si P y Q son del mismo tipo. Aplicado a matrices: nombre_puntero = nombre_matriz;
  • 14. PUNTEROS Y ARRAYS Sea el array de una dimensión: int mat[ ] = {2, 16, -4, 29, 234, 12, 0, 3}; en el que cada elemento, por ser tipo int, ocupa dos bytes de memoria. Suponemos que la dirección de memoria del primer elemento, es 1500: &mat[0] es 1500 &mat[1] será 1502 &mat[7] será 1514
  • 15. PUNTEROS Y ARRAYS int mat[ ] = {2, 16, -4, 29, 234, 12, 0, 3}; En total los 8 elementos ocupan 16 bytes. Podemos representar las direcciones de memoria que ocupan los elementos del array , los datos que contiene y las posiciones del array en la forma: Dirección 1502 1504 1506 1508 1510 1512 1514 Elemento mat[1] mat[2] mat[3] mat[4] mat[5] mat[6] mat[7] 3 0 12 234 29 -4 16 2
  • 16. Dirección 1502 1504 1506 1508 1510 1512 1514 El acceso podemos hacerlo mediante el índice: x = mat[3]+mat[5]; // x = 29 + 12 para sumar los elementos de la cuarta y sexta posiciones. Como hemos dicho que podemos acceder por posición y por dirección: ¿Es lo mismo &mat[0] y mat? Y &mat[1] = mat++ ? Veamos el código de un ejemplo: Elemento mat[1] mat[2] mat[3] mat[4] mat[5] mat[6] mat[7] 16 3 0 12 234 29 -4 2
  • 17. #include <stdio.h> #include <conio.h> int mat[5]={ 2, 16, -4, 29, 234, 12, 0, 3 }, i; //declaradas como globales void main() { printf(&quot;%d&quot;, &mat[0]); //resultado: 1500 (dirección de mem) printf(&quot;% p &quot;, mat); //resultado: 1500 ( &quot; &quot; &quot; &quot; &quot; ) i++; //i=1 printf(&quot;% p &quot;, mat+i); //resultado: 1502 ( &quot; &quot; &quot; &quot; &quot; ) printf(&quot;%d&quot;, *(mat+i)); //resultado: 1 6 (valor de mat[1] o valor getch(); } //en la dirección 1502
  • 18.
  • 19. Aplicando los puntos anteriores, podemos decir que char * ( * ( *var ) ( ) ) [10] 7 6 4 2 1 3 5 La interpretación es: 1. La variable var es declarada como 2. un puntero a 3. una función que devuelve 4. un puntero a 5 . un array de 10 elementos, los cuales son 6. punteros a 7. objetos de tipo char.

Notas del editor

  1. ytuytudeytu
  2. ytuytudeytu
  3. ytuytudeytu
  4. ytuytudeytu
  5. ytuytudeytu
  6. ytuytudeytu
  7. ytuytudeytu
  8. ytuytudeytu
  9. ytuytudeytu
  10. ytuytudeytu
  11. ytuytudeytu
  12. ytuytudeytu
  13. ytuytudeytu
  14. ytuytudeytu
  15. ytuytudeytu
  16. ytuytudeytu
  17. ytuytudeytu
  18. ytuytudeytu
  19. ytuytudeytu