Red de conocimiento informático - Aprendizaje de código fuente - ¿Cuál es la relación entre punteros y matrices?

¿Cuál es la relación entre punteros y matrices?

1. Puntero: El sistema abre una celda para una variable y el puntero apunta al valor de la variable de esta celda.

2. Matriz: El sistema abre un grupo de celdas para un determinado grupo de números. La primera dirección de la matriz es el nombre de la variable de la matriz que usted definió.

La única diferencia entre una matriz y un puntero es que la dirección a la que apunta el nombre de la matriz no se puede cambiar.

Para matrices, la primera dirección de la matriz también se puede representar mediante un puntero, como por ejemplo:

int a[10]

int *p; , n;

p = a;

Se pueden utilizar varios métodos para obtener el valor del primer elemento:

n =a[0];

n = *p;

n = p[0];

n = *(p 0);

Pero lo siguiente declaración Es ilegal:

lecturas = totales // ¡Ilegal! No se pueden cambiar los totales de lecturas = dptr; // ¡Ilegal! Los totales no se pueden cambiar

Los nombres de las matrices son constantes de puntero. No puede hacer que apunten a nada más que a la matriz que representan.

Información ampliada

El siguiente programa define un array doble y un puntero doble que asigna la dirección inicial del array. Posteriormente, no sólo se puede utilizar la notación de puntero con nombres de matrices, sino que también se puede utilizar la notación de subíndice con punteros.

int main()

{

const int NUM_COINS = 5;

monedas dobles[NUM_COINS] = {0,05, 0,1, 0.25, 0.5, 1.0};

double *doublePtr; // Puntero a un doble

// Asigna la dirección de la matriz de monedas a doublePtr

doublePtr = monedas;

// Muestra el contenido de la matriz de monedas

// ¡Usa subíndices con el puntero!

cout amp;lt;amp;lt; setprecision (2);

cout amp; amp lt; "Aquí están los valores en la matriz de monedas:\n"; ; contar amp; NUM_COINS; contar )

cout lt; amp; lt; ¡Muestre el contenido de la matriz de monedas nuevamente, pero esta vez use notación de puntero con el nombre de la matriz!

cout amp;lt;amp;lt; "\nY aquí están de nuevo:\n";

for (int recuento = 0; recuento < NUM_COINS; recuento)

cout <amp;lt; *(recuento de monedas) <amp;lt; >

cout amp;lt;amp;lt; endl;

return 0;

}

Resultado de salida del programa:

p>

Aquí están los valores en el arreglo de monedas: 0.05 0.1 0.25 0.5 1 Y aquí están nuevamente: 0.05 0.1 0.25 0.5 1

Cuando la dirección de un arreglo se asigna a un puntero, no lo es. Se necesita el operador de dirección. Dado que el nombre de la matriz ya es una dirección, usar el operador amp; Sin embargo, puede utilizar el operador de dirección para obtener la dirección de un único elemento en una matriz.