in

Punteros C – javatpoint

pointer

El puntero en lenguaje C es una variable que almacena la dirección de otra variable. Esta variable puede ser de tipo int, char, array, function o cualquier otro puntero. El tamaño del puntero depende de la arquitectura. Sin embargo, en la arquitectura de 32 bits, el tamaño de un puntero es de 2 bytes.

Considere el siguiente ejemplo para definir un puntero que almacena la dirección de un número entero.

Declarar un puntero

El puntero en lenguaje c se puede declarar usando * (símbolo de asterisco). También se conoce como puntero de indirección que se utiliza para eliminar la referencia a un puntero.

Ejemplo de puntero

A continuación se muestra un ejemplo de cómo utilizar punteros para imprimir la dirección y el valor.

ejemplo de puntero

Como puede ver en la figura anterior, la variable de puntero almacena la dirección de la variable numérica, es decir, fff4. El valor de la variable numérica es 50. Pero la dirección de la variable de puntero p es aaa3.

Con la ayuda de * (operador de indirección), podemos imprimir el valor de la variable de puntero p.

Veamos el ejemplo del puntero como se explica en la figura anterior.

Producción

Address of number variable is fff4
Address of p variable is fff4
Value of p variable is 50

Puntero a matriz

Puntero a una función

Puntero a la estructura

c punteros

Ventaja del puntero

1) puntero reduce el código y mejora el rendimiento, se utiliza para recuperar cadenas, árboles, etc. y se utiliza con matrices, estructuras y funciones.

2) podemos devolver varios valores de una función usando el puntero.

3) Te hace capaz de acceder a cualquier ubicación de la memoria en la memoria de la computadora.

Uso de puntero

Hay muchas aplicaciones de punteros en lenguaje c.

1) Asignación de memoria dinámica

En lenguaje c, podemos asignar memoria dinámicamente usando las funciones malloc () y calloc () donde se usa el puntero.

2) Matrices, funciones y estructuras

Los punteros en lenguaje c se utilizan ampliamente en matrices, funciones y estructuras. Reduce el código y mejora el rendimiento.

Dirección del (&) operador

La dirección del operador ‘&’ devuelve la dirección de una variable. Pero, necesitamos usar% u para mostrar la dirección de una variable.

Producción

value of number is 50, address of number is fff4

Puntero nulo

Un puntero al que no se le asigna ningún valor excepto NULL se conoce como puntero NULL. Si no tiene ninguna dirección para especificar en el puntero en el momento de la declaración, puede asignar un valor NULL. Proporcionará un mejor enfoque.

En la mayoría de las bibliotecas, el valor del puntero es 0 (cero).

Programa de puntero para intercambiar dos números sin usar la tercera variable.

Producción

Before swap: *p1=10 *p2=20
After swap: *p1=20 *p2=10

Leer punteros complejos

Hay varias cosas que deben tenerse en cuenta al leer los punteros complejos en C. Veamos la precedencia y asociatividad de los operadores que se utilizan con respecto a los punteros.

Operador Precedencia Asociatividad
(), [] 1 De izquierda a derecha
*, identificador 2 De derecha a izquierda
Tipo de datos 3

Aquí, debemos notar que,

  • (): Este operador es un operador de corchetes que se utiliza para declarar y definir la función.
  • []: Este operador es un operador de subíndice de matriz
  • *: Este operador es un operador de puntero.
  • Identificador: es el nombre del puntero. A esto siempre se le asignará la prioridad.
  • Tipo de datos: el tipo de datos es el tipo de variable a la que el puntero debe apuntar. También incluye el modificador como firmado int, long, etc.).

Cómo leer el puntero: int (* p)[10].

Para leer el puntero, debemos ver que () y [] tienen la misma precedencia. Por tanto, aquí se debe considerar su asociatividad. La asociatividad es de izquierda a derecha, por lo que la prioridad va a ().

Dentro del corchete (), el operador de puntero * y el nombre de puntero (identificador) p tienen la misma precedencia. Por lo tanto, aquí se debe considerar su asociatividad que es de derecha a izquierda, por lo que la prioridad va ap, y la segunda prioridad va a *.

Asignar la tercera prioridad a [] ya que el tipo de datos tiene la última prioridad. Por lo tanto, el puntero tendrá el aspecto siguiente.

  • char -> 4
  • * -> 2
  • p -> 1
  • [10] -> 3

El puntero se leerá como p es un puntero a una matriz de números enteros de tamaño 10.

Ejemplo

¿Cómo leer el siguiente puntero?

, En t

vacío))


Explicación

Este puntero se leerá como p es un puntero a dicha función que acepta el primer parámetro como el puntero a una matriz unidimensional de enteros de tamaño dos y el segundo parámetro como el puntero a una función cuyo parámetro es nulo y el tipo de retorno es el entero.

Deja una respuesta

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

listview1

Ejemplo de ListView de Android – javatpoint

G7ZFVgM4giYh82omzx4EMb 1200 80

Introducción a AMD OverDrive: cómo hacer overclocking en su procesador AMD