La aritmética de punteros en el lenguaje de programación C

Aquí vamos a aprender cómo funciona la aritmética de punteros con variables de puntero?

Aquí, estamos tomando un ejemplo con una matriz de enteros; vamos a declarar un puntero de número entero e inicializar el puntero con la dirección de base de matriz de enteros.

Considere este ejemplo y leer la explicación escrita debajo de la

programa C programa y de salida con la aritmética de punteros (++) usando array int, puntero de array

#include <stdio.h>
int main(){
//declare an arra
int arr[]={10,20,30,40,50};
//declare and initialise pointer
int *ptr=arr;
printf("arr[0] value: %d, memory address: %pn",*ptr,ptr);
++ptr;
printf("arr[1] value: %d, memory address: %pn",*ptr,ptr);
++ptr;
printf("arr[2] value: %d, memory address: %pn",*ptr,ptr);
++ptr;
printf("arr[3] value: %d, memory address: %pn",*ptr,ptr);
++ptr;
printf("arr[4] value: %d, memory address: %pn",*ptr,ptr);
return 0;
}

salida

arr[0] value: 10, memory address: 0x7fffb273d9f0
arr[1] value: 20, memory address: 0x7fffb273d9f4
arr[2] value: 30, memory address: 0x7fffb273d9f8
arr[3] value: 40, memory address: 0x7fffb273d9fc
arr[4] value: 50, memory address: 0x7fffb273da00

Explicación

En este programa, cada ++ (incremento) de expresión está añadiendo 1 a la variable puntero (PTR ) pero variable puntero (PTR ) no se mueve de 1 byte.

¿Por qué?

Cuando añadimos 1 al puntero, puntero pasa sizeof (pointer_data_type) bytes.

Por ejemplo – si hay un puntero de número entero y añadir 1 en el puntero se moverá sizeof () es decir, 2 o 4 bytes (depende de la arquitectura del sistema).

En este ejemplo puntero variable de ptr es un tipo entero y la sizeof () es 4, por tanto, el puntero se está moviendo de 4 bytes en cada ++ operación y acceder a los siguientes valores de la matriz arr .


Deja un comentario

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