Diferencia entre matriz y puntero

Autor: Laura McKinney
Fecha De Creación: 1 Abril 2021
Fecha De Actualización: 10 Mayo 2024
Anonim
Punteros en C - Matrices y punteros
Video: Punteros en C - Matrices y punteros

Contenido


Existe una estrecha relación entre la matriz y el puntero. El puntero se puede utilizar para acceder a los elementos de la matriz, al acceder a toda la matriz utilizando la aritmética del puntero, el acceso es más rápido. Hay una diferencia básica entre un puntero y una matriz, es decir, una matriz es una colección de variables de tipo de datos similar, mientras que el puntero es una variable que almacena la dirección de otra variable. Hay algunas otras diferencias entre una matriz y un puntero que se analizan a continuación en el cuadro comparativo.

  1. Cuadro comparativo
  2. Definición
  3. Diferencias clave
  4. Conclusión

Cuadro comparativo

Bases para la comparaciónFormaciónPuntero
Declaración// En C ++
escriba var_name;
// En Java.
escriba var-name;
var_name = nuevo tipo;
// En C ++
escriba * var_name;
TrabajandoAlmacena el valor de la variable de tipo de datos homogéneo.Almacene la dirección de la otra variable del mismo tipo de datos que el tipo de datos de las variables de puntero.
GeneracionSe puede generar una variedad de punteros.Se puede generar un puntero a una matriz.
Soporte de JavaApoye el concepto de matriz.No es compatible con punteros.
AlmacenamientoUna matriz normal almacena valores de variable y una matriz de puntero almacena la dirección de las variables.Los punteros están especialmente diseñados para almacenar la dirección de variables.
CapacidadUna matriz puede almacenar el número de elementos, mencionados en el tamaño de la variable de matriz. Una variable de puntero puede almacenar la dirección de una sola variable a la vez.


Definición de matriz

Una matriz es la colección de los elementos del mismo tipo de datos, y todos estos elementos se denominan con un nombre común, que es el nombre de una variable de matriz. Se puede acceder a un elemento de matriz particular accediendo al índice específico de esa matriz donde se almacena ese elemento. Las matrices pueden ser una matriz unidimensional, una matriz bidimensional o una matriz multidimensional. También se puede generar una matriz de punteros, es decir, una matriz que contiene todas las variables como variables de puntero. En "C ++", las matrices se asignan estáticamente, mientras que en "Java" las matrices se asignan dinámicamente.

// En C ++ escriba var_name; // En Java. escriba var-name; var_name = nuevo tipo;

Aquí el 'tipo' denota el tipo de datos de una variable de matriz, 'var_name' denota el nombre dado a la variable de matriz, 'tamaño' denota la capacidad de la variable de matriz, es decir, cuántos elementos de 'tipo' se pueden almacenar en esa variable de matriz. . Hay dos métodos para acceder a una matriz, la primera "aritmética de puntero" y la segunda "indexación de matriz", de las cuales la "aritmética de puntero" es más rápida.


// acceder usando aritmética de puntero Void display_array (int * S) {while (* s) {cout (<< "value is" << * s); * s ++; }}

El uso de "aritmética de puntero" funcionaría más rápido en comparación con la "indexación de matriz", es decir, acceder a la variable de matriz utilizando su índice. Si necesita pasar una matriz de punteros a una función, puede hacerlo utilizando el mismo método que usa para pasar una matriz normal, es decir, llamar directamente a la función con el nombre de la matriz, sin ningún índice.

Vamos a entenderlo con el ejemplo.

// Declarando la matriz de punteros. int * p;

Aquí, muestra que "p" es una matriz de tipo entero, contendrá la dirección de 10 variables de tipo entero. Pasemos la matriz de punteros anterior a una pantalla de función ().

pantalla (p); // Llama a la pantalla de funciones. void display (int * d) {// Función que recibe la matriz de punteros. para (int i = 0; i <10; i ++) {cout << ("index" <

Esta función mostrará los valores, presentes en las variables, cuyas direcciones se almacenan en esta matriz de punteros secuencialmente.

Definición de puntero

El puntero es una variable que contiene la dirección de memoria de otra variable. El tipo de datos de ambos, la variable de puntero y la variable cuya dirección se asigna a una variable de puntero, debe ser el mismo. La variable de puntero se declara como sigue.

// Declaración en C ++ type * name;

Aquí, "tipo" es un tipo de datos, "nombre" es el nombre de la variable de puntero. El "tipo" define qué tipo de dirección de variable se puede almacenar en la variable de puntero. Por ejemplo, el puntero entero almacenará la dirección de la variable entera. Hay dos operadores de puntero ‘*’ y ‘&’. El operador "*" devuelve el valor ubicado en la dirección, que se almacena en la variable seguida del signo "*". El operador "y" devuelve la dirección de la variable seguida del signo "y".

// por ejemplo int b = 10 int a = & b; // Aquí la dirección de b se almacena en la variable a. // permite que la dirección de b sea 2000, entonces ahora a = 2000. int c = * a; // Aquí, la variable de puntero entero * a devolverá el valor que se encuentra en la dirección almacenada en un .ie. c = 10.

Solo hay dos operadores aritméticos que puede usar en punteros, es decir, suma y resta. Si aplica un incremento en una variable de puntero entero, se incrementará por el tamaño del tipo de datos, es decir, en 2 bytes, ya que es un puntero entero, en el incremento tendrá que apuntar la siguiente variable entera. Igual es el caso con decremento.

// p es un puntero entero que contiene el valor 2000. p ++; // ahora p = 2002. pags--; // ahora p nuevamente contiene 2000 como decrementado por dos bytes.

  1. Una matriz almacena las variables de tipos de datos similares y los tipos de datos de las variables deben coincidir con el tipo de matriz. Por otro lado, la variable de puntero almacena la dirección de una variable, de un tipo similar a un tipo de tipo de variable de puntero.
  2. Podemos generar una matriz de punteros, es decir, una matriz cuyas variables son las variables de puntero. Por otro lado, podemos crear un puntero que apunte a una matriz.
  3. Java admite la matriz, pero no admite punteros.
  4. Un tamaño de matriz decide la cantidad de variables que puede almacenar mientras que; una variable de puntero puede almacenar la dirección de solo una variable

Nota:

Java no admite ni evita estrictamente los punteros.

Conclusión:

Cuando necesitemos trabajar en elementos de datos de un tipo de datos similar, en lugar de trabajar por separado en variables, podemos crear una matriz de esas variables de tipos de datos similares y luego operar sobre ellas. Los punteros son necesarios para algún programa, le da un poder tremendo, pero desafortunadamente, si un puntero contiene un valor incorrecto, será el error más difícil de encontrar.