Está en la página 1de 19

Escuela Politécnica Nacional

Facultad de Ingeniería Eléctrica y


Electrónica.
Segundo resumen de la clase de Programación
Realizado por:
Dennis Pinchao
Jonathan Catota
Programación: GR2
Maestro Guía:
Luis Felipe Urquiza Aguiar
Quito, Enero 2017
Programación 2

1. Estructuras
Definición
Tipos

2. Punteros
Objetivos
Definición
Declaración
Operadores de punteros
Operaciones con punteros
Inicialización de punteros
Punteros a puntero
1. ESTRUCTURAS

Las estructuras son colecciones de variables relacionadas bajo un nombre. Las


estructuras pueden contener variables de muchos tipos diferentes de datos

Las estructuras son tipos de datos derivados - están construidas utilizando


objetos de otros tipos. Considere la siguiente definición de estructura:
struct ejemplo {
char c;
int i;
};
La palabra reservada struct indica se está definiendo una estructura. El
identificador ejemplo es el nombre de la estructura. Las variables declaradas
dentro de las llaves de la definición de estructura son los miembros de la
estructura. Los miembros de la misma estructura deben tener nombres
´únicos mientras que dos estructuras diferentes pueden tener miembros con
el mismo nombre.
TIPOr e

SE DECLARA AL INICIO

• struct tperson{
Int edad;
Unsigned nivelestudios;
Float sueldo;
};

SE DECLARA AL FINAL

• typedef struct{
Int edad;
Unsigned nivelestudios;
Float sueldo;
}tpersona;
5

PUNTEROS
OBJETIVOS
Conocer que es un puntero.

Estudiar como se declara y usan los


punteros.

Realizar ejercicios para practicar el uso de


punteros.
6

Mapa de memoria
•La memoria de un computador está dividida en
segmentos pequeños (8, 16, 32 o 64 bits)
dependiendo de la arquitectura del computador.
•Cada segmento tiene una dirección que permite
acceder a éste para realizar procesos de lectura o
escritura.
7

•Cada vez que se declara una variable en C, el


compilador establece un área de memoria para
almacenar el contenido de la variable.
•El espacio para esa variable se sitúa en una
posición específica de la memoria, conocida como
dirección de memoria.
•Un puntero es una variable que contiene una
dirección de memoria.
8

Declaracion de Punteros
•Para declarar un puntero hay que indicar el tipo
de dato al que apunta un puntero y el nombre del
puntero.
int*puntero;

Tipo de dato Nombre del puntero


al que apunta
9

Ejemplos de declaración de punteros:


int*ptr1;
double*ptr2;
float*ptr3;

Operadores de Punteros
•Existen dos operadores de punteros que son
dirección e indirección.
10

Operador de dirección (&)

•Este operador devuelve la dirección


de memoria de una variable.

int*m;
intcuenta=20;
m= &cuenta; //operador de dirección
11

Operador de dirección (&)

DIRECCION DE MEMORIA
12

Operador de indirección(*)

Este operador devuelve el valor de la


variable localizada en la dirección del
operando que debe ser un puntero.

int*m, cuenta=20,q;
m= &cuenta; //operador de dirección
q = *m;//operador de indirección
13

Operador de indirección(*)

DIRECCION DE MEMORIA
14

Operaciones con Punteros


Asignación de punteros

•Se puede asignar una dirección o un puntero solo a un puntero.


#include<stdio.h>
intmain()
{
intx=100;
int*p1, *p2;
p1 = &x;//se asigna direccionde x
p2 = p1;//se asigna el contenido del puntero p1
printf("Direccionde x= %p, Puntero P2 = %p \n",&x,p2);
printf("Contenido del puntero P2= %d",*p2);
return0;
}
15

Comparación de punteros

•Se pueden comparar dos punteros mediante los operadores de


comparación
#include<stdio.h>
intmain()
{
intx=100, y=200;
int*p1, *p2;
p1 = &x;
p2 = &y;
if(p1>p2)
{
printf("El puntero p1 apunta a una direccionmayor que p2");
}
return0;
}
16

Inicializacion de Punteros
•Después de declarar un puntero este tiene un valor desconocido, por eso hay que
inicializar el puntero antes de usarlo.

Ejemplo 1
inti=0;
int*p;//declara un puntero
p=&i;//asigna la dirección de i a p
Ejemplo 2
intedad=50;
int*p_edad=&edad;//declara y asigna un puntero
17

Punteros a Punteros
•La indirecciónmúltiple (puntero a puntero) permite que un
puntero apunte a otro puntero que a su vez apunta a un valor
deseado.
•Se tienen dos tipos de indirección:

de la variable que contiene el valor deseado.


Puntero Variable

DIRECCION VALOR
18

Indirecciónmúltiple:en un puntero a puntero, el primer puntero


contiene la dirección del segundo puntero, que a su vez apunta
a la dirección del valor deseado.

Puntero Puntero Variable

DIRECCION DIRECCION VALOR

Para declarar un puntero a puntero se usa **


float**p;
19

EJERCICIO EN CLASE
#include <stdio.h>
int main(){
char car='c';
char *pcar;
pcar = &car; /* La variable pcar es inicializada con
la dirección de la variable car */
printf("Son direcciones: pcar = %p y &car = %p\n", pcar, &car);
/* pcar y &car son direcciones de memoria.
El especificador de formato %p se utiliza para mostrar
una dirección de memoria en hexadecimal */
printf("Son caracteres: *pcar = %c y car = %c\n", *pcar, car);
/* *pcar y car son caracteres */
return 0;
}

También podría gustarte