C प्रोग्रामिंग में पॉइंटर्स की सरणी (array of pointers) को समझते हैं, विशेष रूप से स्ट्रिंग्स के लिए।
पॉइंटर्स की सरणी (स्ट्रिंग्स के लिए)
- यह एक सरणी है जिसके तत्व स्ट्रिंग के बेस पते को इंगित करने वाले पॉइंटर्स होते हैं।
- घोषणा और आरंभीकरण:
char *a[] = {"one", "two", "three"};
यहाँ:
a[0]"one" स्ट्रिंग के बेस पते का पॉइंटर है।a[1]"two" स्ट्रिंग के बेस पते का पॉइंटर है।a[2]"three" स्ट्रिंग के बेस पते का पॉइंटर है।
लाभ
- टू-डायमेंशनल कैरेक्टर सरणी के विपरीत, पॉइंटर्स की सरणी में स्टोरेज के लिए निश्चित मेमोरी आकार नहीं होता।
- स्ट्रिंग्स केवल उतने बाइट्स घेरते हैं जितने आवश्यक हैं, इसलिए स्पेस की बर्बादी नहीं होती।
उदाहरण 1: स्ट्रिंग्स और उनके पते प्रिंट करना
#include <stdio.h>
#include <string.h>
void main(){
int i;
char *a[5] = {"One", "Two", "Three", "Four", "Five"};
// प्रत्येक स्ट्रिंग लोकेशन में मान प्रिंट करना
printf("The values in every string location are:\n");
for(i=0; i<5; i++){
printf("%s\n", a[i]);
}
// प्रत्येक स्ट्रिंग लोकेशन के पते प्रिंट करना
printf("The address locations of every string values are:\n");
for(i=0; i<5; i++){
printf("%p\n", (void*)a[i]); // %p फॉर्मेट स्पेसिफायर का उपयोग करें
}
}
आउटपुट
The values in every string location are: One Two Three Four Five The address locations of every string values are: 0x7ffee4b8c9a0 0x7ffee4b8c9a4 0x7ffee4b8c9a8 0x7ffee4b8c9ac 0x7ffee4b8c9b0
उदाहरण 2: पॉइंटर का उपयोग करके स्ट्रिंग प्रिंट करना
#include <stdio.h>
#include <string.h>
void main(){
char string[20] = "TutorialPoint";
char *pointer = string;
// पॉइंटर का उपयोग करके स्ट्रिंग प्रिंट करना
printf("The string is: ");
while(*pointer != '\0'){
printf("%c", *pointer); // %s के बजाय %c का उपयोग करें
pointer++;
}
}
आउटपुट
The string is: TutorialPoint
महत्वपूर्ण सुधार
मूल कोड में printf("%s", *pointer) था जो गलत है। सही है printf("%c", *pointer) या सीधे puts(string)।
मुख्य बिंदु
- पॉइंटर्स की सरणी स्ट्रिंग्स को कुशलतापूर्वक संग्रहीत करती है।
- प्रत्येक पॉइंटर स्ट्रिंग के पहले कैरेक्टर का पता रखता है।
%pफॉर्मेट स्पेसिफायर का उपयोग पतों को प्रिंट करने के लिए करें।