Tecnología

Inicio

¿Qué es un puntero en C?

Una de las características que hace C un potente lenguaje de programación tal es la capacidad para los programadores acceder a la memoria directamente el uso de punteros. Los punteros se utilizan ampliamente en C para el manejo de matrices de datos, la manipulación de cadenas de caracteres, el paso de parámetros a las funciones y la creación de listas enlazadas y otras estructuras de datos complejas. Los punteros son una de las mayores fuentes de confusión para los programadores nuevos en el lenguaje C. La comprensión y el uso de punteros es fundamental para una programación eficaz C.

¿Qué es un puntero en C?

del puntero: Tenga cuidado de limpiar!

Función

Un puntero de objeto, o simplemente puntero, es una variable que contiene una dirección de memoria donde un objeto, tal como una estructura o flotante, o un conjunto de objetos, se almacena. Con esa dirección de memoria, el programador puede leer, modificar y mover a través de la memoria utilizando un puntero.

beneficios

Funciones que toman un puntero a un objeto externo pasan como un parámetro puede modificar ese objeto. Cuando la función termina, el nuevo valor asignado a ese objeto persistirá. Una función puede tener múltiples punteros, lo que permite una sola función para modificar varios objetos con una sola llamada a la función.

Un puntero se puede utilizar para navegar a través de una serie de elementos de forma sistemática o aleatoria usando la notación de matriz, iteración o matemáticas básicas. El uso de punteros para el acceso a la matriz es más rápido que las implementaciones más complejas de una funcionalidad similar se encuentran en otros idiomas. Mientras que tales implementaciones son a menudo más fáciles de usar y prevenir errores, hay una sobrecarga adicional que afecta al rendimiento.

Significado

La capacidad de asignar dinámicamente cantidades arbitrarias de memoria de almacenamiento dinámico en tiempo de ejecución es una técnica llamada "asignación dinámica de memoria." Muchos lenguajes anteriores, como Fortran, requieren la cantidad de memoria asignada a estructuras tales como matrices que se establezcan en tiempo de compilación, y la cantidad de memoria asignada no se pueden cambiar durante la ejecución del programa. Los punteros se utilizan en C para mantener la dirección de memoria asignada dinámicamente.

Uso

Un puntero es declarada mediante la colocación de una estrella (*) entre el nombre del tipo y el nombre de la variable.

El valor de un objeto en la memoria en la dirección en poder del puntero se accede por "eliminación de referencias a" el puntero. Eliminación de referencias a un puntero se hace poniendo una estrella (*) antes del nombre del puntero.

Al manejar Punteros a las estructuras, un miembro de la estructura se hace referencia mediante el uso de una flecha (->) entre el nombre del puntero y el nombre del miembro.

La dirección de un objeto se puede acceder mediante la colocación de un signo (&) antes del nombre de la variable del objeto. Pasando la dirección de un objeto a una función se llama "el paso por referencia." El parámetro se declara como un puntero en el prototipo de función. La función elimina referencia el parámetro a modificar su valor, y el valor persistirá cuando la función termina.

Las matrices se crean mediante la asignación de la cantidad de memoria necesaria para guardar el número deseado de objetos de un tipo determinado. Esto se lleva a cabo durante o después de la declaración con la notación puntero y malloc o calloc, o durante la declaración usando la notación de matriz. Elementos de una matriz se puede acceder usando la notación de referencia del índice o iterando el puntero. La iteración se incrementa automáticamente o disminuye la dirección por el tamaño de un elemento individual de manera que el puntero está colocado correctamente en el comienzo del elemento siguiente o anterior.

Advertencia

asignación de memoria y cancelación de asignación es administrado por el programador. Memoria que se ha asignado deberá ser desasignado cuando ya no es necesaria. El no poder cancelar la asignación de memoria evita que sea utilizado hasta que se cierra la aplicación. Una "pérdida de memoria" se produce cuando una referencia a la memoria asignada se pierde sin liberar la memoria en primer lugar. Las pérdidas de memoria pueden ocurrir cuando se reasigna un puntero o una función sale sin delegar la propiedad de la memoria asignada.

Acceder a la memoria más allá del final de la memoria asignada es un error común cuando se trabaja con matrices. Este error se llama tener un "índice de matriz fuera de límites." Esto puede causar que la aplicación se comporte de forma incorrecta o cierre inesperadamente.