Read in Hindi
Read in English

Array and pointer

Going forward with this C/C++ programming language tutorial we will understand how to access array as a pointer.
We define array as shown below.
int A[10];
A[0] = 0; A[1] = 10; A[2] = 20; ...
Here A is pointer as well. A contains address of 1st int, hence A+1 contains address of 2nd int, A+2 contains address of 3rd int.
Since A is address hence *A will give 0(A[0] = 0 as defined above), value of *(A+1) will be 10, *(A+2) will be 20. Note that *(A)+1 and *(A+1) is not same. *(A)+1 means add 1 to value stored to address stored in A, but *(A+1) means value stored at the address next to A. So now to access value at any index(n) at array we have 2 ways. A[n] और *(A+n)
Lets see an example.
#include <stdio.h>

int main() {
  int A[] = {1,2,3,4};
  printf("[%d, %d, %d, %d]\n",A[0], A[1], A[2], A[3]);

  *A = 10;
  *(A+1) = 20;
  *(A+2) = 30;
  *(A+3) = 40;
  printf("[%d, %d, %d, %d]\n",A[0], A[1], A[2], A[3]);

  A[0] = 0; A[1] = 2; A[2] = 4; A[3] = 6;
  printf("[%d, %d, %d, %d]\n", *A, *(A+1), *(A+2), *(A+3));

  scanf("%d", A);
  return 0;
}
Run the program to see the output.

Array and pointer

आज Hindi के इस C/C++ programming language tutorial को आगे बढ़ाते हुए हम array को pointer के तरीके से जानेंगे.
हम नीचे दिए गए तरीके से array define करते हैं.
int A[10];
A[0] = 0; A[1] = 10; A[2] = 20; ...
इसमें A एक pointer ही होता है. A में array के पहली position वाले int का address store रहता है. A पहली position वाले int का address है, इसलिए A+1 दूसरी position वाले int का address हो जायेगा, A+2 तीसरी position वाले int का...
चूंकि A address है इसलिए *A का मान 0 आएगा(ऊपर A[0] = 0 है), *(A+1) का मान 10 आएगा, *(A+2) का मान 20 आएगा. ध्यान दे कि *(A)+1 और *(A+1) एक ही नहीं हैं. *(A)+1 का मतलब है A में जहाँ का address है उस position पर stored value पर 1 जोड़ना, जबकि *(A+1) का मतलब है A में जहाँ का address है उस position एक आगे वाली position पर stored value. इस तरह हमारे पास किसी array के किसी position(index) पर value को access करने के दो तरीके हैं. A[n] और *(A+n)
इसका एक example देखते हैं.
#include <stdio.h>

int main() {
  int A[] = {1,2,3,4};
  printf("[%d, %d, %d, %d]\n",A[0], A[1], A[2], A[3]);

  *A = 10;
  *(A+1) = 20;
  *(A+2) = 30;
  *(A+3) = 40;
  printf("[%d, %d, %d, %d]\n",A[0], A[1], A[2], A[3]);

  A[0] = 0; A[1] = 2; A[2] = 4; A[3] = 6;
  printf("[%d, %d, %d, %d]\n", *A, *(A+1), *(A+2), *(A+3));

  scanf("%d", A);
  return 0;
}
इसको run करके output का अध्ययन करें.