Comparación de punteros en el lenguaje C

CCBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En el lenguaje C, los punteros se pueden comparar entre sí utilizando operadores relacionales, como mayor que, menor que e igual a. Este laboratorio (lab) te mostrará cómo comparar punteros en el lenguaje de programación C y proporcionará ejemplos para punteros del mismo y de diferentes tipos que apunten a la misma matriz (array).


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL c(("C")) -.-> c/BasicsGroup(["Basics"]) c(("C")) -.-> c/ControlFlowGroup(["Control Flow"]) c(("C")) -.-> c/PointersandMemoryGroup(["Pointers and Memory"]) c(("C")) -.-> c/UserInteractionGroup(["User Interaction"]) c/BasicsGroup -.-> c/variables("Variables") c/BasicsGroup -.-> c/operators("Operators") c/ControlFlowGroup -.-> c/if_else("If...Else") c/PointersandMemoryGroup -.-> c/pointers("Pointers") c/PointersandMemoryGroup -.-> c/memory_address("Memory Address") c/UserInteractionGroup -.-> c/output("Output") subgraph Lab Skills c/variables -.-> lab-123299{{"Comparación de punteros en el lenguaje C"}} c/operators -.-> lab-123299{{"Comparación de punteros en el lenguaje C"}} c/if_else -.-> lab-123299{{"Comparación de punteros en el lenguaje C"}} c/pointers -.-> lab-123299{{"Comparación de punteros en el lenguaje C"}} c/memory_address -.-> lab-123299{{"Comparación de punteros en el lenguaje C"}} c/output -.-> lab-123299{{"Comparación de punteros en el lenguaje C"}} end

Declarar variables puntero

Comienza declarando dos variables puntero del mismo o de diferentes tipos, dependiendo de los requisitos de tu programa. En este ejemplo, declararemos dos punteros enteros llamados ptrA y ptrB.

int *ptrA, *ptrB;

Asignar una dirección de memoria a variables puntero

A continuación, asigna una dirección de memoria a las variables puntero utilizando el operador de declaración de puntero (*) y el operador de dirección (&). Esto también se puede hacer utilizando una conversión (cast), como hemos hecho en estos ejemplos.

ptrA = (int *) 1;
ptrB = (int *) 2;

Comparar variables puntero

Compara las dos variables puntero utilizando uno de los operadores relacionales. En este ejemplo, utilizamos el operador mayor que (>). Si la condición es verdadera, se imprimirá la declaración (statement) dentro del bloque if.

if(ptrB > ptrA) {
  printf("PtrB is greater than ptrA");
}

Repetir los pasos para diferentes tipos de punteros

Repite los pasos 1-3 para variables puntero de diferentes tipos que apunten a la misma matriz (array). En este ejemplo, declaramos un puntero entero (ptrA) y un puntero flotante (ptrB), y les asignamos direcciones de memoria.

int *ptrA;
float *ptrB;

ptrA = (int *) 1000;
ptrB = (float *) 2000;

Probar la comparación de punteros

Compara los dos punteros utilizando un operador relacional.

if(ptrB > ptrA) {
  printf("PtrB is greater than ptrA");
}

Escribir código en el archivo main.c

Escribe todo el programa en el archivo main.c ubicado en el directorio ~/project/.

#include <stdio.h>

int main() {
  int *ptrA, *ptrB;
  float *ptrC, *ptrD;

  ptrA = (int *) 1;
  ptrB = (int *) 2;

  ptrC = (float *) 100;
  ptrD = (float *) 200;

  if (ptrB > ptrA) {
    printf("ptrB is greater than ptrA\n");
  }

  if (ptrD > ptrC) {
    printf("ptrD is greater than ptrC\n");
  }

  return 0;
}

Compilar y ejecutar el programa

Compila el programa utilizando un compilador de C, como GCC, y ejecuta el programa para probar la comparación de punteros.

Resumen

En la programación en C, los punteros se pueden comparar entre sí utilizando operadores relacionales. Los ejemplos de este laboratorio (lab) demuestran cómo comparar punteros del mismo tipo y de diferentes tipos que apuntan a la misma matriz (array). Al comparar punteros, asegúrate de que estén apuntando a la misma matriz para obtener resultados precisos.