C Language in Hindi – Pointer Arithmetic

pointer arithmetic in c in hindi

Pointer Arithmetic in C in Hindi

हम इसके अलावा, addition, substraction आदि जैसे बिंदुओं पर arithmetic operations कर सकते हैं। हालाँकि, जब हम जानते हैं कि pointers में पता शामिल है, तो सूचक पर किए गए arithmetic ऑपरेशन का परिणाम भी सूचक होगा यदि अन्य ऑपरेटर टाइप integer का है। पॉइंटर-से-पॉइंटर घटाव में, परिणाम पूर्णांक मान होगा। सी भाषा में पॉइंटर पर arithmetic संचालन संभव हैं:

  • Increment
  • Decrement
  • Addition
  • Subtraction
  • Comparison

Incrementing Pointer in C in hindi

यदि हम एक pointer को 1 से बढ़ाते हैं, तो सूचक तत्काल अगले स्थान पर point करना शुरू कर देगा। यह सामान्य arithmetic से कुछ अलग है क्योंकि सूचक का मान उस डेटा प्रकार के आकार से बढ़ जाएगा, जिस पर सूचक इंगित कर रहा है।

हम एक पॉइंटर पर increment ऑपरेशन का उपयोग करके एक सरणी को आगे बढ़ा सकते हैं, जो array के हर तत्व की ओर इशारा करता रहेगा, उस पर कुछ ऑपरेशन करेगा, और खुद को loop में अपडेट करेगा।

सूचक को बढ़ाने का नियम नीचे दिया गया है:

  1. new_address = current_address + i * size_of(data type)  

जहां i वह संख्या है जिसके द्वारा पॉइंटर बढ़ जाता है।

32-bit

32-bit int variable के लिए, यह 2 bytes बढ़ाया जाएगा।

64-bit

64-bit int variable के लिए, इसे 4 bytes बढ़ाया जाएगा।

आइए 64-bit architecture पर सूचक variable को बढ़ाने का उदाहरण देखें।

  1. #include<stdio.h>  
  2. int main(){  
  3. int number=50;        
  4. int *p;//pointer to int      
  5. p=&number;//stores the address of number variable        
  6. printf(“Address of p variable is %u \n”,p);        
  7. p=p+1;        
  8. printf(“After increment: Address of p variable is %u \n”,p); // in our case, p will get incremented by 4 bytes.      
  9. return 0;  
  10. }    

Output

Address of p variable is 3214864300 

After increment: Address of p variable is 3214864304 

Traversing an array by using pointer

  1. #include<stdio.h>  
  2. void main ()  
  3. {  
  4.     int arr[5] = {1, 2, 3, 4, 5};  
  5.     int *p = arr;  
  6.     int i;  
  7.     printf(“printing array elements…\n”);  
  8.     for(i = 0; i< 5; i++)  
  9.     {  
  10.         printf(“%d  “,*(p+i));  
  11.     }  
  12. }  

Output

printing array elements…

1  2 3  4 5

 

Decrementing Pointer in C

Increment की तरह, हम एक पॉइंटर variable को घटा सकते हैं। यदि हम एक पॉइंटर को बढ़ाते हैं, तो यह पिछले स्थान पर point करना शुरू कर देगा। सूचक को कम करने का formula नीचे दिया गया है:

  1. new_address = current_address – i * size_of(data type)  

32-bit

32-bit int variable के लिए, इसे 2 bytes घटाया जाएगा।

64-bit

64-बिट इंट variable के लिए, इसे 4 bytes घटाया जाएगा।

आइए 64-बिट OS पर decrement पॉइंटर वेरिएबल का उदाहरण देखें।

  1. #include <stdio.h>            
  2. void main(){            
  3. int number=50;        
  4. int *p;//pointer to int      
  5. p=&number;//stores the address of number variable        
  6. printf(“Address of p variable is %u \n”,p);        
  7. p=p-1;       
  8. printf(“After decrement: Address of p variable is %u \n”,p); // P will now point to the immidiate previous location.         
  9. }      

Output

Address of p variable is 3214864300 

After decrement: Address of p variable is 3214864296 

C Pointer Addition in hindi

हम पॉइंटर वैरिएबल में एक मान जोड़ सकते हैं। सूचक में मान जोड़ने का formula नीचे दिया गया है:

  1. new_address = current_address + (number * size_of (data type))  

32-bit

32-बिट इंट variable के लिए, यह 2 * number जोड़ देगा।

64-bit

64-बिट इंट variable के लिए, यह 4 * number जोड़ देगा।

आइए 64-बिट आर्किटेक्चर पर पॉइंटर variable  में मूल्य जोड़ने का उदाहरण देखें।

  1. #include<stdio.h>  
  2. int main(){  
  3. int number=50;        
  4. int *p;//pointer to int      
  5. p=&number;//stores the address of number variable        
  6. printf("Address of p variable is %u \n",p);        
  7. p=p+3;   //adding 3 to pointer variable    
  8. printf("After adding 3: Address of p variable is %u \n",p);       
  9. return 0;  
  10. }    

Output

Address of p variable is 3214864300 

After adding 3: Address of p variable is 3214864312

 

जैसा कि आप देख सकते हैं, p का पता 3214864300 है। लेकिन p वेरिएबल के साथ 3 जोड़ने के बाद, यह 3214864312 है, अर्थात 4*3=12 increment। चूँकि हम 64-बिट आर्किटेक्चर का उपयोग कर रहे हैं, यह 12 की वृद्धि करता है। लेकिन अगर हम 32-बिट आर्किटेक्चर का उपयोग कर रहे हैं, तो यह केवल 6 यानी 2*3=6 तक बढ़ रहा था। पूर्णांक मान 32-बिट OS में 2-byte मेमोरी पर है।

C Pointer Subtraction in hindi

पॉइंटर जोड़ की तरह, हम पॉइंटर वैरिएबल से एक वैल्यू घटा सकते हैं। किसी भी नंबर को पॉइंटर से घटाकर एक address दिया जाएगा। सूचक variable से मूल्य घटाने का सूत्र नीचे दिया गया है:

  1. new_address = current_address – (number * size_of (data type))  

32-bit

32-बिट इंट variable के लिए, यह 2 * संख्या घटाएगा।

64-bit

64-बिट int variable के लिए, यह 4 * संख्या घटाएगा।

आइए 64-बिट आर्किटेक्चर पर सूचक variable से मूल्य घटाने का उदाहरण देखें।

  1. #include<stdio.h>  
  2. int main(){  
  3. int number=50;        
  4. int *p;//pointer to int      
  5. p=&number;//stores the address of number variable        
  6. printf("Address of p variable is %u \n",p);        
  7. p=p-3; //subtracting 3 from pointer variable    
  8. printf("After subtracting 3: Address of p variable is %u \n",p);        
  9. return 0;  
  10. }    

Output

Address of p variable is 3214864300 

After subtracting 3: Address of p variable is 3214864288

आप सूचक variable से 3 घटाकर देख सकते हैं, यह पिछले पते के मूल्य से 12 (4*3) कम है।

हालांकि, एक संख्या को घटाने के बजाय, हम एक पते को दूसरे पते (पॉइंटर) से घटा सकते हैं। यह एक संख्या में परिणाम होगा। यह एक साधारण arithmetic ऑपरेशन नहीं होगा, लेकिन यह निम्नलिखित नियम का पालन करेगा।

यदि दो बिंदु एक ही प्रकार के हैं,

  1. Address2 - Address1 = (subtraction of two addresses)/size of data type which pointer points

एक सूचक को दूसरे से घटाने के लिए निम्न उदाहरण पर विचार करें।

  1. #include<stdio.h>  
  2. void main ()  
  3. {  
  4.     int i = 100;   
  5.     int *p = &i;  
  6.     int *temp;  
  7.     temp = p;   
  8.     p = p + 3;  
  9.     printf("Pointer Subtraction: %d - %d = %d",p, temp, p-temp);  
  10. }  

Output

Pointer Subtraction: 1030585080 – 1030585068 = 3

Illegal arithmetic with pointers in hindi

ऐसे विभिन्न ऑपरेशन हैं जो पॉइंटर्स पर नहीं किए जा सकते हैं। चूंकि, पॉइंटर स्टोर का पता इसलिए हमें उन ऑपरेशनों को अनदेखा करना चाहिए जो अवैध पते का कारण बन सकते हैं, उदाहरण के लिए, जोड़ और गुणा। ऐसे operations की एक सूची नीचे दी गई है।

  • Address + Address = illegal
  • Address * Address = illegal
  • Address % Address = illegal
  • Address / Address = illegal
  • Address & Address = illegal
  • Address ^ Address = illegal
  • Address | Address = illegal
  • ~Address = illegal

Pointer to function in C in hindi

जैसा कि हमने पिछले अध्याय में चर्चा की है, एक सूचक सी में एक फ़ंक्शन को इंगित कर सकता है। हालांकि, सूचक variable की घोषणा फ़ंक्शन के समान होनी चाहिए। फ़ंक्शन को point करने के लिए एक सूचक बनाने के लिए निम्न उदाहरण पर विचार करें।

  1. #include<stdio.h>  
  2. int addition ();  
  3. int main ()  
  4. {  
  5.     int result;   
  6.     int (*ptr)();  
  7.     ptr = &addition;  
  8.     result = (*ptr)();  
  9.     printf("The sum is %d",result);  
  10. }  
  11. int addition()  
  12. {  
  13.     int a, b;   
  14.     printf("Enter two numbers?");  
  15.     scanf("%d %d",&a,&b);  
  16.     return a+b;  
  17. }  

Output

Enter two numbers?10 15 

The sum is 25  

Pointer to Array of functions in C in hindi

फ़ंक्शन की एक सरणी की अवधारणा को समझने के लिए, हमें फ़ंक्शन के सरणी को समझना चाहिए। मूल रूप से, फ़ंक्शन का array एक array है जिसमें फ़ंक्शन के पते होते हैं। दूसरे शब्दों में, फ़ंक्शंस के एक point के लिए पॉइंटर एक पॉइंटर है जो फ़ंक्शंस की ओर इशारा करता है। निम्नलिखित उदाहरण पर विचार करें।

  1. #include<stdio.h>  
  2. int show();  
  3. int showadd(int);  
  4. int (*arr[3])();  
  5. int (*(*ptr)[3])();  
  6.   
  7. int main ()  
  8. {  
  9.     int result1;  
  10.     arr[0] = show;  
  11.     arr[1] = showadd;  
  12.     ptr = &arr;  
  13.     result1 = (**ptr)();  
  14.     printf("printing the value returned by show : %d",result1);  
  15.     (*(*ptr+1))(result1);  
  16. }  
  17. int show()  
  18. {  
  19.     int a = 65;  
  20.     return a++;  
  21. }  
  22. int showadd(int b)  
  23. {  
  24.     printf("\nAdding 90 to the value returned by show: %d",b+90);  
  25. }  

Output

printing the value returned by show : 65 

Adding 90 to the value returned by show: 155

Leave a Reply

DMCA.com Protection Status