Punteros en lenguaje C

Punteros

El puntero es un tipo especial de variable, que puntos (almacenes) dirección de otra variable. Proporciona un acceso directo a la memoria. El uso de la variable puntero se puede almacenar la dirección de otra variable simple, incluso se puede acceder a / editar el valor de esa variable.

Ventajas del uso de punteros

  • Como sabemos una función puede return un solo valor, pero el uso de punteros podemos return múltiples valores de las funciones.
  • En general, declaramos memoria para las variables en el tiempo de compilación, pero hay un problema tampoco se necesita más memoria o que ocupamos el espacio de memoria adicional. El uso de los punteros podemos asignar memoria para la variable en tiempo de ejecución y, por supuesto, podemos cambiar su tamaño while tiempo de ejecución.
  • El uso de punteros podemos diseñar estructuras de datos complejas como la pila de espera, lista enlazada, y árbol, etc.
  • En general, no podemos cambiar el valor de una variable en una función (llamada por valor), pero el uso de punteros (llamada por referencia) podemos cambiar los valores reales de los parámetros.
  • y punteros permiten el acceso directo a la memoria.

desventajas del uso de punteros

  • punteros permiten el acceso directo a la memoria, se puede acceder a posiciones de memoria protegidas.
  • Si no está inicializado el puntero, puede ser la causa del fallo de segmentación.
  • Estos son más lentos que otras variables simples.
  • punteros necesitan liberar memoria asignada dinámicamente.

Declaración de variables de puntero

Un variable de puntero declara seguido por un signo de asterisco (*).

Sintaxis:

data-type *pointer-variable;
---
int* a; //integer pointer variable
float* b; // float pointer variable
char* c; // character pointer variable
struct student* std; // integer pointer variable

Cada variable puntero toma 2 bytes (16 bytes en compiladores) / 4 bytes (32 bytes en compiladores) en la memoria, no importa qué tipo de variable es?

inicialización de una variable puntero

inicialización de una variable puntero

Cada variable puntero debe ser inicializado con la dirección válida de otra variable. Desde un puntero contiene la dirección única, por lo que no se puede asignar un valor directamente en ella.

Sintaxis:

// Initialization with declaration
data-type *pointer-variable= &another-variable;
// Initialization after declaration
data-type *pointer-variable;
pointer-variable= &another-variable;
---
int var1,var2;
//Initialization with declaration
int *a=&var1;
// Initialization after declaration
int *b;
b = &var2;

Ejemplo:

#include <stdio.h>
int main()
{
int var = 100;
int* ptr;
ptr = &var;
printf("nValue of var= %d", *ptr);
printf("nAddress of var= %X", ptr);
return 0;
}

salida:

Value of var= 100
Address of var= 94FE9C

Pointers in C language - 4


Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *