Diferencia entre puntero a una array y array de punteros

Puntero a una array : El puntero a una arraytambién se conoce comopuntero de array. Estamos usando el puntero para acceder a los componentes de la array.

  int a[3] = {3, 4, 5 }; 
  int *ptr = a; 

Tenemos un puntero ptr que se enfoca en el componente 0 de la array. Del mismo modo, podemos declarar un puntero que apunte a toda la array en lugar de solo a un componente de la array. Sintaxis :

data type (*var name)[size of array];

Declaración del puntero a una array:

// pointer to an array of five numbers
 int (* ptr)[5] = NULL;     

La declaración anterior es el puntero a una array de cinco enteros. Usamos paréntesis para pronunciar puntero a una array. Dado que el subíndice tiene mayor prioridad que el direccionamiento indirecto, es fundamental encerrar el operador de direccionamiento indirecto y el nombre del puntero entre corchetes. Ejemplo: 

C++

// C++ program to demonstrate
// pointer to an array.
 
#include <iostream>
using namespace std;
 
int main()
{
 
    // Pointer to an array of five numbers
    int(*a)[5];
 
    int b[5] = { 1, 2, 3, 4, 5 };
 
    int i = 0;
 
    // Points to the whole array b
 
    a = &b;
 
    for (i = 0; i < 5; i++)
          cout << *(*a + i) << endl;
 
    return 0;
}
 
// This code is contributed by sarajadhav12052009

C

// C program to demonstrate
// pointer to an array.
 
#include <stdio.h>
 
int main()
{
 
    // Pointer to an array of five numbers
    int(*a)[5];
 
    int b[5] = { 1, 2, 3, 4, 5 };
 
    int i = 0;
 
    // Points to the whole array b
 
    a = &b;
 
    for (i = 0; i < 5; i++)
 
        printf("%d\n", *(*a + i));
 
    return 0;
}
Producción:

1
2
3
4
5

Array de punteros :Array de punteros” es una array de lasvariables de puntero. También se conoce como arrays de punteros. Sintaxis:

int *var_name[array_size];

Declaración de una array de punteros:

 int *ptr[3];

Podemos crear variables de puntero independientes que apunten a los diferentes valores o podemos crear una array entera de punteros que apunten a todos los valores. Ejemplo: 

C++

// C++ program to demonstrate
// example of array of pointers.
 
#include <iostream>
using namespace std;
 
const int SIZE = 3;
 
int main()
{
 
    // creating an array
    int arr[] = { 1, 2, 3 };
 
    // we can make an integer pointer array to
    // storing the address of array elements
    int i, *ptr[SIZE];
 
    for (i = 0; i < SIZE; i++) {
 
        // assigning the address of integer.
        ptr[i] = &arr[i];
    }
 
    // printing values using pointer
    for (i = 0; i < SIZE; i++) {
 
        cout << "Value of arr[" << i << "] = " << *ptr[i] << endl;
    }
}
 
// This code is contributed by sarajadhav12052009

C

// C program to demonstrate
// example of array of pointers.
 
#include <stdio.h>
 
const int SIZE = 3;
 
void main()
{
 
    // creating an array
    int arr[] = { 1, 2, 3 };
 
    // we can make an integer pointer array to
    // storing the address of array elements
    int i, *ptr[SIZE];
 
    for (i = 0; i < SIZE; i++) {
 
        // assigning the address of integer.
        ptr[i] = &arr[i];
    }
 
    // printing values using pointer
    for (i = 0; i < SIZE; i++) {
 
        printf("Value of arr[%d] = %d\n", i, *ptr[i]);
    }
}
Producción:

Value of arr[0] = 1
Value of arr[1] = 2
Value of arr[2] = 3

Ejemplo: Del mismo modo, podemos crear una array de punteros al carácter para almacenar una lista de strings. 

C

#include <stdio.h>
 
const int size = 4;
 
void main()
{
 
    // array of pointers to a character
    // to store a list of strings
    char* names[] = {
        "amit",
        "amar",
        "ankit",
        "akhil"
    };
 
    int i = 0;
 
    for (i = 0; i < size; i++) {
        printf("%s\n", names[i]);
    }
}
Producción:

amit
amar
ankit
akhil

Publicación traducida automáticamente

Artículo escrito por dekay y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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