Data">
Nothing Special   »   [go: up one dir, main page]

García Mendoza Glosario7

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 5

Instituto Politécnico Nacional

Unidad Profesional Interdisciplinaria en Ingeniería y


Tecnologías Avanzadas

Introducción a la programación

Glosario 7

Adrián David García Mendoza


N° de boleta: 2021640002

Martes 11 de mayo de 2021


Glosario 7

Apuntador o puntero.

Un apuntador es una variable que contiene la dirección de otra variable y se representa por medio de los
operadores de dirección (&) e indirección (*). El primero proporciona la dirección de un objeto y el segundo
permite el acceso al objeto del cual se tiene la dirección.

Sintaxis para definir un apuntador.

tipo_de_dato_al_que_apunta * identificador ;

Sintaxis para el uso de los operadores * y & en el contexto de apuntador.

El operador * es un operador unario, y se lee como “el contenido al que apunta”, es decir, permite acceder
a un dato a través de un apuntador que lo apunte. Este acceso es de tipo indirecto. No obstante, el
símbolo * también se utiliza al definir un apuntador: precede al identificador del apuntador y sucede al tipo
de dato al que apunta.

El operador & también es un operador unario, y se lee como “la dirección de memoria de”, es decir, extrae
la dirección de memoria base del dato al que precede.

¿Qué es un apuntador “salvaje” y cómo se produce?

Es un apuntador que inicialmente contiene una dirección que no es válida (o no apunta a nada: valor
NULL). Se produce al definir un apuntador, sin inicializarlo. Puede provocar un fallo en el programa o
comportarse de manera extraña (modificar un dato del programa, el código del propio programa o el
código del propio S.O.). En C, los punteros que no están específicamente inicializados pueden apuntar a
direcciones impredecibles en la memoria.
¿Qué es la aritmética de apuntadores?

La aritmética de punteros es una aritmética un tanto especial. Trabaja tomando como unidad de cálculo el
tamaño del tipo base. Se pueden utilizar los operadores de suma, resta, multiplicación, incremento,
decremento, relacionales y de asignación. Un ejemplo se muestra a continuación:
int dias[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
typedef int* tIntPtr;
tIntPtr punt = dias;
punt empieza apuntando al primer elemento del array:
printf(“%d“, *punt); // Muestra 31 (primer elemento)
punt++;
punt++ hace que punt pase a apuntar al siguiente elemento
printf(“%d“, *punt); // Muestra 28 (segundo elemento)
A la dirección de memoria actual se le suman tantas unidades
como bytes (4) ocupe en memoria un dato de ese tipo (int).
Otro ejemplo:
int X[3] = {0, 1, 2};
int* IX = &X[1];
X = *(IX + 1);
/* X se modifica. El apuntador IX se desplaza una posición y accede
temporalmente a X[2], por lo tanto X toma este valor (2). Observa que
IX no se reasigna. */

Sintaxis para definir arreglos de apuntadores

tipo_punteros * id_array[talla];

Sintaxis para definir apuntadores a arreglos

tipo_puntero * id_puntero = &identificador_arreglo[elemento_al_que_apunta] ;


Equivalencia de nomenclatura para indexar con notación de arreglo y lo equivalente en notación de
apuntadores (es decir, con aritmética de apuntadores).

Generalmente, se hace uso de esta equivalencia en el paso de arrays a subprogramas. El nombre del
array es un puntero: ya es un paso por referencia.
Prototipos equivalentes para parámetros array:
const int N = ...;
void cuadrado(int arr[N]);
void cuadrado(int arr[], int size); // Array no delimitado
void cuadrado(int *arr, int size); // Puntero
Arrays no delimitados y punteros: se necesita la dimensión
Elementos: se acceden con índice (arr[i]) o con puntero (*arr).
Es decir, dos sentencias equivalentes serían:
X = arr[i];
X = *(arr + i);
O también:
Y = arr[i + 1];
Y = *(arr + i + 1);
BIBLIOGRAFÍA

Cairó, O. (2006). Fundamentos de programación. Piensa en C. Naucalpan de Juárez, Estado de


México: Pearson Educación.

Marzal, A. & Gracia, I. (s.f.). Introducción a la programación con C. Castellón de la Plana,


Castellón: Universitat Jaume I.

También podría gustarte