Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> Lenguaje C

Relación entre matrices y punteros

Relación entre matrices y punteros

En este tutorial, aprenderá sobre la relación entre matrices y punteros en la programación en C. También aprenderá a acceder a los elementos de la matriz mediante punteros.

Antes de aprender sobre la relación entre matrices y punteros, asegúrese de consultar estos dos temas:


Relación entre matrices y punteros

Una matriz es un bloque de datos secuenciales. Escribamos un programa para imprimir direcciones de elementos de matriz.

#include <stdio.h>
int main() {
   int x[4];
   int i;

   for(i = 0; i < 4; ++i) {
      printf("&x[%d] = %p\n", i, &x[i]);
   }

   printf("Address of array x: %p", x);

   return 0;
}

Salida

&x[0] = 1450734448
&x[1] = 1450734452
&x[2] = 1450734456
&x[3] = 1450734460
Address of array x: 1450734448

Hay una diferencia de 4 bytes entre dos elementos consecutivos del arreglo x . Es porque el tamaño de int es de 4 bytes (en nuestro compilador).

Note que, la dirección de &x[0] y x es el mismo. Es porque el nombre de la variable x apunta al primer elemento de la matriz.

Del ejemplo anterior, está claro que &x[0] es equivalente a x . Y, x[0] es equivalente a *x .

Del mismo modo,


Ejemplo 1:punteros y matrices

#include <stdio.h>
int main() {

  int i, x[6], sum = 0;

  printf("Enter 6 numbers: ");

  for(i = 0; i < 6; ++i) {
  // Equivalent to scanf("%d", &x[i]);
      scanf("%d", x+i);

  // Equivalent to sum += x[i]
      sum += *(x+i);
  }

  printf("Sum = %d", sum);

  return 0;
}

Cuando ejecute el programa, la salida será:

Enter 6 numbers: 2
3
4
4
12
4
Sum = 29 

Aquí, hemos declarado una matriz x de 6 elementos. Para acceder a los elementos de la matriz, hemos utilizado punteros.


En la mayoría de los contextos, los nombres de las matrices se convierten en punteros. En palabras simples, los nombres de las matrices se convierten en punteros. Esa es la razón por la que puede usar punteros para acceder a elementos de matrices. Sin embargo, debe recordar que los punteros y las matrices no son lo mismo .

Hay algunos casos en los que los nombres de las matrices no se convierten en punteros. Para obtener más información, visite:¿Cuándo el nombre de la matriz no se convierte en un puntero?


Ejemplo 2:matrices y punteros

#include <stdio.h>
int main() {

  int x[5] = {1, 2, 3, 4, 5};
  int* ptr;

  // ptr is assigned the address of the third element
  ptr = &x[2]; 

  printf("*ptr = %d \n", *ptr);   // 3
  printf("*(ptr+1) = %d \n", *(ptr+1)); // 4
  printf("*(ptr-1) = %d", *(ptr-1));  // 2

  return 0;
}

Cuando ejecute el programa, la salida será:

*ptr = 3 
*(ptr+1) = 4 
*(ptr-1) = 2

En este ejemplo, &x[2] , la dirección del tercer elemento, se asigna a ptr puntero. Por lo tanto, 3 se mostró cuando imprimimos *ptr .

Y, imprimiendo *(ptr+1) nos da el cuarto elemento. Del mismo modo, imprimiendo *(ptr-1) nos da el segundo elemento.


Lenguaje C

  1. ¿Cuál es la relación entre big data y computación en la nube?
  2. Punteros y arreglos de C++
  3. Direcciones y punteros de C Pass
  4. Estructuras C y punteros
  5. La relación entre voltaje y corriente en motores eléctricos
  6. Mejora de la relación entre operaciones y mantenimiento
  7. La relación entre IoT y Edge Computing
  8. Diferencias entre SCADA y HMI
  9. La diferencia entre motores de CC y CA
  10. Diferencia entre soldadura fuerte y soldadura blanda.
  11. Diferencia entre motores de 2 tiempos y 4 tiempos