SlideShare una empresa de Scribd logo
1 de 6
Descargar para leer sin conexión
Ingeniería Técnica Industrial
Fundamentos de Informática
Tema 6. Punteros
Página 1 de 6
TEMA 6. PUNTEROS
Es una variable estática que, en vez de contener valores de datos,
contiene valores que representan direcciones de memoria de variables.
D104 35
Vble puntero, x Vble entera, y
Pos: D217 Pos: D104
Memoria Principal
35
D104
………
y
x
D104
D217
Dirección en
Memoria de la
variable puntero x.
Contenido de la
variable puntero x
Dirección en Memoria de la variable
entera y (variable apuntada por x)
Contenido de la
variable entera y
(variable apuntada
por x)
PUNTERO Variable que contiene la DIRECCIÓN de memoria en la
que se encuentra almacenada otra variable.
La sintaxis general para declarar una variable tipo puntero es:
tipo *nombre_puntero;
donde tipo es el tipo de variables a la que apuntará el puntero.
int *p;
6.1 Los operadores punteros
Existen dos operadores especiales de punteros: * y &.
• El operador & (operador dirección), aplicado sobre el nombre de
una variable, devuelve su dirección de memoria.
• El operador * (operador indirección) aplicado sobre una variable de
tipo puntero permite acceder al dato al que apunta, es decir, al
valor de la variable situada en esa dirección de memoria.
Ingeniería Técnica Industrial
Fundamentos de Informática
Tema 6. Punteros
Página 2 de 6
Ejemplo1:
int *p, b, x = 1250;
p = &x;
b = *p; /* b = x; */
Nombre de la
variable
Dirección de
memoria
Variable en
memoria
0x10004
b
0x10005
1250
0x10006
x
0x10007
1250
0x10008
0x10009
p
0x1000A
0x10006
0x1000B
Ejemplo2:
int cuenta = 125;
int *p;
int x;
p = &cuenta; x = *p;
* p
Memoria Principal
125
…………
cuenta
p
D100
D150
x D175
Memoria Principal
125
D100
…………
cuenta
p
D100
D150
x D175
Memoria Principal
125
D100
…………
cuenta
p
D100
D150
125x D175
Ingeniería Técnica Industrial
Fundamentos de Informática
Tema 6. Punteros
Página 3 de 6
6.2 Asignación de punteros.
Respecto a la comparación y a la asignación, los punteros se ajustan
a las mismas reglas que cualquier otra variable en C:
• Un puntero puede utilizarse a la derecha de una declaración de
asignación para asignar su valor a otro puntero.
• Podemos comparar dos punteros en una expresión relacional.
#include <stdio.h>
main() {
int i=100, *p1, *p2;
p1 = &i;
p2 = p1;
if (p1==p2) /* estamos comparando dos punteros */
printf(“p1 apunta a la misma dirección de memoria que p2”);
*p1 = *p1 + 2; /* El * tiene más prioridad que el + */
printf (“El valor de *p2 es %dn”, *p2);
(*p2)++; /* ante la duda de prioridades usamos parentesis */
printf(“El valor de *p1 es %dn”, *p1”);
i--;
prinft(“El valor de i es %dn”, i);
}
A un puntero se le puede asignar:
El valor de otro puntero, del mismo tipo.
La dirección de memoria de una variable cuyo tipo coincida
en el tipo_base del puntero.
Ejemplo:
int x=15, *p1=NULL, *p2=NULL;
p1 = &x; // Se le asigna la dirección de memoria de x
p2 = p1; // Se le asigna el valor de p1
Los dos apuntan a la misma variable
Ingeniería Técnica Industrial
Fundamentos de Informática
Tema 6. Punteros
Página 4 de 6
6.3 Inicialización de punteros
Al igual que otras variables, C no inicializa los punteros cuando se
declaran y es preciso inicializarlos antes de su uso.
TODO PUNTERO DEBE INICIALIZARSE, ya que en caso contrario
tras ser declarado apuntaría a cualquier sitio (PELIGROSO) al usarlo
puede p.ej. modificar una parte de la memoria reservada a otra variable
Si aún no sabemos dónde debe apuntar, se le asignará el valor NULL
(nulo) No apunta a ningún sitio en especial.
Ejemplo: int *p = NULL;
Las variables tipo puntero deben apuntar al tipo de dato correcto. Si
no es así, pueden producirse resultados inesperados. Por ejemplo:
main() {
unsigned char a=255; /* 255 en binario es 11111111 (8 bits) */
char *p; /* p es un puntero a un signed char (por defecto) */
p = &a; /* almaceno en p la dir de memoria de la variable a */
printf("%i", *p); /* ¡muestra el valor –1, en vez de 255! */
}
main() {
unsigned int a=269, b; /* 269 en binario: 100001101 (9 bits) */
unsigned char *p; /* p: puntero a unsigned char (8 bits) */
p = &a; /* p supone que a es unsigned char solo coge 8 bits */
b = *p; /* asigno a b el valor que hay en la dir apuntada por p */
printf("%i", b); /* ¡muestra el valor 13, en vez de 269! */
} /* coge solo los 8 1º bits (00001101), cuyo valor es es 13 */
Ingeniería Técnica Industrial
Fundamentos de Informática
Tema 6. Punteros
Página 5 de 6
6.4 Problemas con los punteros
Un puntero con un valor erróneo es MUY PELIGROSO, y el ERROR
más DIFÍCIL DE DEPURAR, porque en compilación NO SE DETECTA, y
los errores tras ejecutar pueden DESPISTAR.
Hay que hacer caso a los AVISOS (WARNINGS) ya que una sospecha
sobre un PUNTERO puede provocar un gravísimo error en ejecución.
6.4.1 Ejemplo de puntero que no apunta al tipo correcto:
El tipo base del puntero determina el tipo de datos al que apunta el
puntero y por tanto es el que le indica al compilador cuantos bytes debe
transferir para cualquier asignación que usa un puntero. Como podemos
asignar cualquier dirección a un puntero, no se produce error cuando
asignamos a un puntero, la dirección de una variable de un tipo distinto.
#include <stdio.h>
main(){
float x = 55.4;
int *p; /* p es un puntero a un entero */
p = &x; Error: “cannot convert ‘float*’ to ‘int*’ in assignment”
printf("El valor correcto es: %fn", x);
printf("Valor apuntado (como float): %f n", *p);
printf("Valor apuntado (como int) : %i n", *p);
}
El error es debido a que p es un puntero a int y hacemos que apunte
a un float.
El valor correcto es: 55.400000
Valor apuntado (como float): 508524232706.400024
Valor apuntado (como int) : -26214
Ingeniería Técnica Industrial
Fundamentos de Informática
Tema 6. Punteros
Página 6 de 6
6.4.2 Ejemplo de puntero no inicializado
main(){
int i, *p;
i = 50;
*p = i; /* ¡ERROR! ¿A dónde apunta el puntero p? */
printf(“El valor de i es %i n”, i);
printf(“El valor de *p es %i n”, *p);
}
Ponemos el valor de i (50) en la dir de memoria a la que apunta p,
pero ¿a dónde apunta p?. Si p apunta a una zona libre no hay problema,
pero si es a una zona donde hay datos entonces habrá problemas.
Lo peor en este caso es que el compilador no muestra ningún
mensaje de error o de aviso.
6.4.3 Ejemplo de puntero usado de forma incorrecta
Este error suele ocurrir cuando olvidamos poner el operador de
dirección (&). Por ejemplo, consideremos el siguiente programa:
#include <stdio.h>
main(){
int i, *p;
i = 50;
p = i; Error: “invalid conversion from ‘int’ to ‘int*’”
printf(“El valor de i es %i n”, i);
printf(“El valor de *p es %i n”, *p);
}
Lo correcto sería haber escrito
p = &i;
El error es debido a que hacemos que p apunte a la dir 50 de
memoria, en vez de a la dir de memoria donde se encuentra la variable i.
El valor de i es 50
El valor de *p es 50
El valor de i es 50
El valor de *p es -3578

Más contenido relacionado

La actualidad más candente

Matlab integración numérica, método del trapecio
Matlab integración numérica, método del trapecioMatlab integración numérica, método del trapecio
Matlab integración numérica, método del trapecioTensor
 
Problema resueltos de electricidad y magnetismo
Problema resueltos de electricidad y magnetismoProblema resueltos de electricidad y magnetismo
Problema resueltos de electricidad y magnetismoTarqino
 
Redondear un número entero ingresado a la decena y centena más cercana.
Redondear un número entero ingresado a la decena y centena más cercana. Redondear un número entero ingresado a la decena y centena más cercana.
Redondear un número entero ingresado a la decena y centena más cercana. Carlos Aviles Galeas
 
Gráficas polares - Matemática II
Gráficas polares - Matemática II Gráficas polares - Matemática II
Gráficas polares - Matemática II Joe Arroyo Suárez
 
Jesús fraile mora problemas resueltos de eledtrotécnia
Jesús fraile mora   problemas resueltos de eledtrotécniaJesús fraile mora   problemas resueltos de eledtrotécnia
Jesús fraile mora problemas resueltos de eledtrotécniaJuan Carlos
 
Derivada Polinomios en C
Derivada Polinomios en CDerivada Polinomios en C
Derivada Polinomios en CAbraham
 
Imagen Filtrado Espacial
Imagen Filtrado EspacialImagen Filtrado Espacial
Imagen Filtrado EspacialOmar Sanchez
 
Moles gramos volumenes etc
Moles gramos volumenes etcMoles gramos volumenes etc
Moles gramos volumenes etcjose rengifo
 
Coordenadas polares - Matemática II
Coordenadas polares - Matemática IICoordenadas polares - Matemática II
Coordenadas polares - Matemática IIJoe Arroyo Suárez
 
Series de fourier 22 Ejercicios Resueltos
Series de fourier 22 Ejercicios ResueltosSeries de fourier 22 Ejercicios Resueltos
Series de fourier 22 Ejercicios ResueltosJoe Arroyo Suárez
 
Ejercicios Whule y Do While
Ejercicios Whule y Do WhileEjercicios Whule y Do While
Ejercicios Whule y Do WhileJoshe Varillas
 
Ejercicios propuesto 3
Ejercicios propuesto 3Ejercicios propuesto 3
Ejercicios propuesto 3jfranco_123
 

La actualidad más candente (20)

Matlab integración numérica, método del trapecio
Matlab integración numérica, método del trapecioMatlab integración numérica, método del trapecio
Matlab integración numérica, método del trapecio
 
Problema resueltos de electricidad y magnetismo
Problema resueltos de electricidad y magnetismoProblema resueltos de electricidad y magnetismo
Problema resueltos de electricidad y magnetismo
 
Redondear un número entero ingresado a la decena y centena más cercana.
Redondear un número entero ingresado a la decena y centena más cercana. Redondear un número entero ingresado a la decena y centena más cercana.
Redondear un número entero ingresado a la decena y centena más cercana.
 
Gráficas polares - Matemática II
Gráficas polares - Matemática II Gráficas polares - Matemática II
Gráficas polares - Matemática II
 
Tabla de transformadas de laplace
Tabla de transformadas de laplaceTabla de transformadas de laplace
Tabla de transformadas de laplace
 
Jesús fraile mora problemas resueltos de eledtrotécnia
Jesús fraile mora   problemas resueltos de eledtrotécniaJesús fraile mora   problemas resueltos de eledtrotécnia
Jesús fraile mora problemas resueltos de eledtrotécnia
 
Derivada Polinomios en C
Derivada Polinomios en CDerivada Polinomios en C
Derivada Polinomios en C
 
Problemasresueltosdecampomagneticoenelvacio
ProblemasresueltosdecampomagneticoenelvacioProblemasresueltosdecampomagneticoenelvacio
Problemasresueltosdecampomagneticoenelvacio
 
Imagen Filtrado Espacial
Imagen Filtrado EspacialImagen Filtrado Espacial
Imagen Filtrado Espacial
 
Ejercicios resueltos
Ejercicios resueltosEjercicios resueltos
Ejercicios resueltos
 
Moles gramos volumenes etc
Moles gramos volumenes etcMoles gramos volumenes etc
Moles gramos volumenes etc
 
Coordenadas polares - Matemática II
Coordenadas polares - Matemática IICoordenadas polares - Matemática II
Coordenadas polares - Matemática II
 
Potencial electrico y capacitores
Potencial electrico y capacitores Potencial electrico y capacitores
Potencial electrico y capacitores
 
Induccion matematica
Induccion matematicaInduccion matematica
Induccion matematica
 
C++ TUTORIAL 5
C++ TUTORIAL 5C++ TUTORIAL 5
C++ TUTORIAL 5
 
Ejercicios resueltos-1metodod de biseccionm...
Ejercicios resueltos-1metodod de biseccionm...Ejercicios resueltos-1metodod de biseccionm...
Ejercicios resueltos-1metodod de biseccionm...
 
Series de fourier 22 Ejercicios Resueltos
Series de fourier 22 Ejercicios ResueltosSeries de fourier 22 Ejercicios Resueltos
Series de fourier 22 Ejercicios Resueltos
 
Ejercicios Whule y Do While
Ejercicios Whule y Do WhileEjercicios Whule y Do While
Ejercicios Whule y Do While
 
Minimos cuadrados
Minimos cuadradosMinimos cuadrados
Minimos cuadrados
 
Ejercicios propuesto 3
Ejercicios propuesto 3Ejercicios propuesto 3
Ejercicios propuesto 3
 

Similar a Teoria punteros

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
 
Apuntadores
ApuntadoresApuntadores
Apuntadoresluisabn
 
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
 
Apuntadores y direccionamiento
Apuntadores y direccionamientoApuntadores y direccionamiento
Apuntadores y direccionamientoSergio Ramos
 
Apuntadorkeurjeh4jj4by un 4hh4j4u4jj4h4y4jh4
Apuntadorkeurjeh4jj4by un 4hh4j4u4jj4h4y4jh4Apuntadorkeurjeh4jj4by un 4hh4j4u4jj4h4y4jh4
Apuntadorkeurjeh4jj4by un 4hh4j4u4jj4h4y4jh4hassanbadredun
 
Computacion punteros
Computacion punterosComputacion punteros
Computacion punterosManuel
 
Introducción a los Punteros en el lenguaje C
Introducción a los Punteros en el lenguaje CIntroducción a los Punteros en el lenguaje C
Introducción a los Punteros en el lenguaje CDiego Santimateo
 
Apuntadores, cadenas y estructuras
Apuntadores, cadenas y estructurasApuntadores, cadenas y estructuras
Apuntadores, cadenas y estructurasXendor Resendiz
 
Trabajo programacion 1 jose silva
Trabajo programacion 1 jose silvaTrabajo programacion 1 jose silva
Trabajo programacion 1 jose silvaJhosse Ant Siilva
 
Gestión Dinámica de la Memoria
Gestión Dinámica de la MemoriaGestión Dinámica de la Memoria
Gestión Dinámica de la MemoriaMago Julio Cesar
 
ED 01 tipos_datos_ejercicios
ED 01 tipos_datos_ejerciciosED 01 tipos_datos_ejercicios
ED 01 tipos_datos_ejerciciosA J
 
Tema 8 www.fresymetal.com
Tema 8 www.fresymetal.comTema 8 www.fresymetal.com
Tema 8 www.fresymetal.comFresyMetal
 

Similar a Teoria punteros (20)

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++
 
Punteros
PunterosPunteros
Punteros
 
Apuntadores
ApuntadoresApuntadores
Apuntadores
 
Programación en c (iii parte)
Programación en c (iii parte)Programación en c (iii parte)
Programación en c (iii parte)
 
Punteros2
Punteros2Punteros2
Punteros2
 
Luis hernandez 22310621
Luis hernandez   22310621Luis hernandez   22310621
Luis hernandez 22310621
 
Apuntadores y direccionamiento
Apuntadores y direccionamientoApuntadores y direccionamiento
Apuntadores y direccionamiento
 
Apuntadorkeurjeh4jj4by un 4hh4j4u4jj4h4y4jh4
Apuntadorkeurjeh4jj4by un 4hh4j4u4jj4h4y4jh4Apuntadorkeurjeh4jj4by un 4hh4j4u4jj4h4y4jh4
Apuntadorkeurjeh4jj4by un 4hh4j4u4jj4h4y4jh4
 
Computacion punteros
Computacion punterosComputacion punteros
Computacion punteros
 
1 Tipos De Datos Ejercicios
1 Tipos De Datos Ejercicios1 Tipos De Datos Ejercicios
1 Tipos De Datos Ejercicios
 
Introducción a los Punteros en el lenguaje C
Introducción a los Punteros en el lenguaje CIntroducción a los Punteros en el lenguaje C
Introducción a los Punteros en el lenguaje C
 
Apuntadores, cadenas y estructuras
Apuntadores, cadenas y estructurasApuntadores, cadenas y estructuras
Apuntadores, cadenas y estructuras
 
Trabajo programacion 1 jose silva
Trabajo programacion 1 jose silvaTrabajo programacion 1 jose silva
Trabajo programacion 1 jose silva
 
!Prograc7
!Prograc7!Prograc7
!Prograc7
 
Gestión Dinámica de la Memoria
Gestión Dinámica de la MemoriaGestión Dinámica de la Memoria
Gestión Dinámica de la Memoria
 
ED 01 tipos_datos_ejercicios
ED 01 tipos_datos_ejerciciosED 01 tipos_datos_ejercicios
ED 01 tipos_datos_ejercicios
 
Lecture 37
Lecture 37Lecture 37
Lecture 37
 
Tema 8 www.fresymetal.com
Tema 8 www.fresymetal.comTema 8 www.fresymetal.com
Tema 8 www.fresymetal.com
 
Punteros
PunterosPunteros
Punteros
 

Último

Sesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO CersaSesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO CersaXimenaFallaLecca1
 
Unidad 3 Administracion de inventarios.pptx
Unidad 3 Administracion de inventarios.pptxUnidad 3 Administracion de inventarios.pptx
Unidad 3 Administracion de inventarios.pptxEverardoRuiz8
 
TALLER PAEC preparatoria directamente de la secretaria de educación pública
TALLER PAEC preparatoria directamente de la secretaria de educación públicaTALLER PAEC preparatoria directamente de la secretaria de educación pública
TALLER PAEC preparatoria directamente de la secretaria de educación públicaSantiagoSanchez353883
 
Calavera calculo de estructuras de cimentacion.pdf
Calavera calculo de estructuras de cimentacion.pdfCalavera calculo de estructuras de cimentacion.pdf
Calavera calculo de estructuras de cimentacion.pdfyoseka196
 
El proyecto “ITC SE Lambayeque Norte 220 kV con seccionamiento de la LT 220 kV
El proyecto “ITC SE Lambayeque Norte 220 kV con seccionamiento de la LT 220 kVEl proyecto “ITC SE Lambayeque Norte 220 kV con seccionamiento de la LT 220 kV
El proyecto “ITC SE Lambayeque Norte 220 kV con seccionamiento de la LT 220 kVSebastianPaez47
 
Residente de obra y sus funciones que realiza .pdf
Residente de obra y sus funciones que realiza  .pdfResidente de obra y sus funciones que realiza  .pdf
Residente de obra y sus funciones que realiza .pdfevin1703e
 
Magnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principiosMagnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principiosMarceloQuisbert6
 
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIPSEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIPJosLuisFrancoCaldern
 
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdfTAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdfAntonioGonzalezIzqui
 
Tiempos Predeterminados MOST para Estudio del Trabajo II
Tiempos Predeterminados MOST para Estudio del Trabajo IITiempos Predeterminados MOST para Estudio del Trabajo II
Tiempos Predeterminados MOST para Estudio del Trabajo IILauraFernandaValdovi
 
Manual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdfManual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdfedsonzav8
 
CICLO DE DEMING que se encarga en como mejorar una empresa
CICLO DE DEMING que se encarga en como mejorar una empresaCICLO DE DEMING que se encarga en como mejorar una empresa
CICLO DE DEMING que se encarga en como mejorar una empresaSHERELYNSAMANTHAPALO1
 
Introducción a los sistemas neumaticos.ppt
Introducción a los sistemas neumaticos.pptIntroducción a los sistemas neumaticos.ppt
Introducción a los sistemas neumaticos.pptEduardoCorado
 
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdfAnthonyTiclia
 
¿QUE SON LOS AGENTES FISICOS Y QUE CUIDADOS TENER.pptx
¿QUE SON LOS AGENTES FISICOS Y QUE CUIDADOS TENER.pptx¿QUE SON LOS AGENTES FISICOS Y QUE CUIDADOS TENER.pptx
¿QUE SON LOS AGENTES FISICOS Y QUE CUIDADOS TENER.pptxguillermosantana15
 
Diapositiva de Topografía Nivelación simple y compuesta
Diapositiva de Topografía Nivelación simple y compuestaDiapositiva de Topografía Nivelación simple y compuesta
Diapositiva de Topografía Nivelación simple y compuestajeffsalazarpuente
 
sistema de construcción Drywall semana 7
sistema de construcción Drywall semana 7sistema de construcción Drywall semana 7
sistema de construcción Drywall semana 7luisanthonycarrascos
 
MANIOBRA Y CONTROL INNOVATIVO LOGO PLC SIEMENS
MANIOBRA Y CONTROL INNOVATIVO LOGO PLC  SIEMENSMANIOBRA Y CONTROL INNOVATIVO LOGO PLC  SIEMENS
MANIOBRA Y CONTROL INNOVATIVO LOGO PLC SIEMENSLuisLobatoingaruca
 
Proyecto de iluminación "guia" para proyectos de ingeniería eléctrica
Proyecto de iluminación "guia" para proyectos de ingeniería eléctricaProyecto de iluminación "guia" para proyectos de ingeniería eléctrica
Proyecto de iluminación "guia" para proyectos de ingeniería eléctricaXjoseantonio01jossed
 

Último (20)

VALORIZACION Y LIQUIDACION MIGUEL SALINAS.pdf
VALORIZACION Y LIQUIDACION MIGUEL SALINAS.pdfVALORIZACION Y LIQUIDACION MIGUEL SALINAS.pdf
VALORIZACION Y LIQUIDACION MIGUEL SALINAS.pdf
 
Sesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO CersaSesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
 
Unidad 3 Administracion de inventarios.pptx
Unidad 3 Administracion de inventarios.pptxUnidad 3 Administracion de inventarios.pptx
Unidad 3 Administracion de inventarios.pptx
 
TALLER PAEC preparatoria directamente de la secretaria de educación pública
TALLER PAEC preparatoria directamente de la secretaria de educación públicaTALLER PAEC preparatoria directamente de la secretaria de educación pública
TALLER PAEC preparatoria directamente de la secretaria de educación pública
 
Calavera calculo de estructuras de cimentacion.pdf
Calavera calculo de estructuras de cimentacion.pdfCalavera calculo de estructuras de cimentacion.pdf
Calavera calculo de estructuras de cimentacion.pdf
 
El proyecto “ITC SE Lambayeque Norte 220 kV con seccionamiento de la LT 220 kV
El proyecto “ITC SE Lambayeque Norte 220 kV con seccionamiento de la LT 220 kVEl proyecto “ITC SE Lambayeque Norte 220 kV con seccionamiento de la LT 220 kV
El proyecto “ITC SE Lambayeque Norte 220 kV con seccionamiento de la LT 220 kV
 
Residente de obra y sus funciones que realiza .pdf
Residente de obra y sus funciones que realiza  .pdfResidente de obra y sus funciones que realiza  .pdf
Residente de obra y sus funciones que realiza .pdf
 
Magnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principiosMagnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principios
 
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIPSEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
 
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdfTAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
 
Tiempos Predeterminados MOST para Estudio del Trabajo II
Tiempos Predeterminados MOST para Estudio del Trabajo IITiempos Predeterminados MOST para Estudio del Trabajo II
Tiempos Predeterminados MOST para Estudio del Trabajo II
 
Manual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdfManual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdf
 
CICLO DE DEMING que se encarga en como mejorar una empresa
CICLO DE DEMING que se encarga en como mejorar una empresaCICLO DE DEMING que se encarga en como mejorar una empresa
CICLO DE DEMING que se encarga en como mejorar una empresa
 
Introducción a los sistemas neumaticos.ppt
Introducción a los sistemas neumaticos.pptIntroducción a los sistemas neumaticos.ppt
Introducción a los sistemas neumaticos.ppt
 
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf
 
¿QUE SON LOS AGENTES FISICOS Y QUE CUIDADOS TENER.pptx
¿QUE SON LOS AGENTES FISICOS Y QUE CUIDADOS TENER.pptx¿QUE SON LOS AGENTES FISICOS Y QUE CUIDADOS TENER.pptx
¿QUE SON LOS AGENTES FISICOS Y QUE CUIDADOS TENER.pptx
 
Diapositiva de Topografía Nivelación simple y compuesta
Diapositiva de Topografía Nivelación simple y compuestaDiapositiva de Topografía Nivelación simple y compuesta
Diapositiva de Topografía Nivelación simple y compuesta
 
sistema de construcción Drywall semana 7
sistema de construcción Drywall semana 7sistema de construcción Drywall semana 7
sistema de construcción Drywall semana 7
 
MANIOBRA Y CONTROL INNOVATIVO LOGO PLC SIEMENS
MANIOBRA Y CONTROL INNOVATIVO LOGO PLC  SIEMENSMANIOBRA Y CONTROL INNOVATIVO LOGO PLC  SIEMENS
MANIOBRA Y CONTROL INNOVATIVO LOGO PLC SIEMENS
 
Proyecto de iluminación "guia" para proyectos de ingeniería eléctrica
Proyecto de iluminación "guia" para proyectos de ingeniería eléctricaProyecto de iluminación "guia" para proyectos de ingeniería eléctrica
Proyecto de iluminación "guia" para proyectos de ingeniería eléctrica
 

Teoria punteros

  • 1. Ingeniería Técnica Industrial Fundamentos de Informática Tema 6. Punteros Página 1 de 6 TEMA 6. PUNTEROS Es una variable estática que, en vez de contener valores de datos, contiene valores que representan direcciones de memoria de variables. D104 35 Vble puntero, x Vble entera, y Pos: D217 Pos: D104 Memoria Principal 35 D104 ……… y x D104 D217 Dirección en Memoria de la variable puntero x. Contenido de la variable puntero x Dirección en Memoria de la variable entera y (variable apuntada por x) Contenido de la variable entera y (variable apuntada por x) PUNTERO Variable que contiene la DIRECCIÓN de memoria en la que se encuentra almacenada otra variable. La sintaxis general para declarar una variable tipo puntero es: tipo *nombre_puntero; donde tipo es el tipo de variables a la que apuntará el puntero. int *p; 6.1 Los operadores punteros Existen dos operadores especiales de punteros: * y &. • El operador & (operador dirección), aplicado sobre el nombre de una variable, devuelve su dirección de memoria. • El operador * (operador indirección) aplicado sobre una variable de tipo puntero permite acceder al dato al que apunta, es decir, al valor de la variable situada en esa dirección de memoria.
  • 2. Ingeniería Técnica Industrial Fundamentos de Informática Tema 6. Punteros Página 2 de 6 Ejemplo1: int *p, b, x = 1250; p = &x; b = *p; /* b = x; */ Nombre de la variable Dirección de memoria Variable en memoria 0x10004 b 0x10005 1250 0x10006 x 0x10007 1250 0x10008 0x10009 p 0x1000A 0x10006 0x1000B Ejemplo2: int cuenta = 125; int *p; int x; p = &cuenta; x = *p; * p Memoria Principal 125 ………… cuenta p D100 D150 x D175 Memoria Principal 125 D100 ………… cuenta p D100 D150 x D175 Memoria Principal 125 D100 ………… cuenta p D100 D150 125x D175
  • 3. Ingeniería Técnica Industrial Fundamentos de Informática Tema 6. Punteros Página 3 de 6 6.2 Asignación de punteros. Respecto a la comparación y a la asignación, los punteros se ajustan a las mismas reglas que cualquier otra variable en C: • Un puntero puede utilizarse a la derecha de una declaración de asignación para asignar su valor a otro puntero. • Podemos comparar dos punteros en una expresión relacional. #include <stdio.h> main() { int i=100, *p1, *p2; p1 = &i; p2 = p1; if (p1==p2) /* estamos comparando dos punteros */ printf(“p1 apunta a la misma dirección de memoria que p2”); *p1 = *p1 + 2; /* El * tiene más prioridad que el + */ printf (“El valor de *p2 es %dn”, *p2); (*p2)++; /* ante la duda de prioridades usamos parentesis */ printf(“El valor de *p1 es %dn”, *p1”); i--; prinft(“El valor de i es %dn”, i); } A un puntero se le puede asignar: El valor de otro puntero, del mismo tipo. La dirección de memoria de una variable cuyo tipo coincida en el tipo_base del puntero. Ejemplo: int x=15, *p1=NULL, *p2=NULL; p1 = &x; // Se le asigna la dirección de memoria de x p2 = p1; // Se le asigna el valor de p1 Los dos apuntan a la misma variable
  • 4. Ingeniería Técnica Industrial Fundamentos de Informática Tema 6. Punteros Página 4 de 6 6.3 Inicialización de punteros Al igual que otras variables, C no inicializa los punteros cuando se declaran y es preciso inicializarlos antes de su uso. TODO PUNTERO DEBE INICIALIZARSE, ya que en caso contrario tras ser declarado apuntaría a cualquier sitio (PELIGROSO) al usarlo puede p.ej. modificar una parte de la memoria reservada a otra variable Si aún no sabemos dónde debe apuntar, se le asignará el valor NULL (nulo) No apunta a ningún sitio en especial. Ejemplo: int *p = NULL; Las variables tipo puntero deben apuntar al tipo de dato correcto. Si no es así, pueden producirse resultados inesperados. Por ejemplo: main() { unsigned char a=255; /* 255 en binario es 11111111 (8 bits) */ char *p; /* p es un puntero a un signed char (por defecto) */ p = &a; /* almaceno en p la dir de memoria de la variable a */ printf("%i", *p); /* ¡muestra el valor –1, en vez de 255! */ } main() { unsigned int a=269, b; /* 269 en binario: 100001101 (9 bits) */ unsigned char *p; /* p: puntero a unsigned char (8 bits) */ p = &a; /* p supone que a es unsigned char solo coge 8 bits */ b = *p; /* asigno a b el valor que hay en la dir apuntada por p */ printf("%i", b); /* ¡muestra el valor 13, en vez de 269! */ } /* coge solo los 8 1º bits (00001101), cuyo valor es es 13 */
  • 5. Ingeniería Técnica Industrial Fundamentos de Informática Tema 6. Punteros Página 5 de 6 6.4 Problemas con los punteros Un puntero con un valor erróneo es MUY PELIGROSO, y el ERROR más DIFÍCIL DE DEPURAR, porque en compilación NO SE DETECTA, y los errores tras ejecutar pueden DESPISTAR. Hay que hacer caso a los AVISOS (WARNINGS) ya que una sospecha sobre un PUNTERO puede provocar un gravísimo error en ejecución. 6.4.1 Ejemplo de puntero que no apunta al tipo correcto: El tipo base del puntero determina el tipo de datos al que apunta el puntero y por tanto es el que le indica al compilador cuantos bytes debe transferir para cualquier asignación que usa un puntero. Como podemos asignar cualquier dirección a un puntero, no se produce error cuando asignamos a un puntero, la dirección de una variable de un tipo distinto. #include <stdio.h> main(){ float x = 55.4; int *p; /* p es un puntero a un entero */ p = &x; Error: “cannot convert ‘float*’ to ‘int*’ in assignment” printf("El valor correcto es: %fn", x); printf("Valor apuntado (como float): %f n", *p); printf("Valor apuntado (como int) : %i n", *p); } El error es debido a que p es un puntero a int y hacemos que apunte a un float. El valor correcto es: 55.400000 Valor apuntado (como float): 508524232706.400024 Valor apuntado (como int) : -26214
  • 6. Ingeniería Técnica Industrial Fundamentos de Informática Tema 6. Punteros Página 6 de 6 6.4.2 Ejemplo de puntero no inicializado main(){ int i, *p; i = 50; *p = i; /* ¡ERROR! ¿A dónde apunta el puntero p? */ printf(“El valor de i es %i n”, i); printf(“El valor de *p es %i n”, *p); } Ponemos el valor de i (50) en la dir de memoria a la que apunta p, pero ¿a dónde apunta p?. Si p apunta a una zona libre no hay problema, pero si es a una zona donde hay datos entonces habrá problemas. Lo peor en este caso es que el compilador no muestra ningún mensaje de error o de aviso. 6.4.3 Ejemplo de puntero usado de forma incorrecta Este error suele ocurrir cuando olvidamos poner el operador de dirección (&). Por ejemplo, consideremos el siguiente programa: #include <stdio.h> main(){ int i, *p; i = 50; p = i; Error: “invalid conversion from ‘int’ to ‘int*’” printf(“El valor de i es %i n”, i); printf(“El valor de *p es %i n”, *p); } Lo correcto sería haber escrito p = &i; El error es debido a que hacemos que p apunte a la dir 50 de memoria, en vez de a la dir de memoria donde se encuentra la variable i. El valor de i es 50 El valor de *p es 50 El valor de i es 50 El valor de *p es -3578