एक मूल्य के बजाय फिर से एक सूचक हो रही है:
एक आम तौर पर सूचक अंकगणित का उपयोग करता है, जब वे एक सूचक फिर से प्राप्त करना चाहते हैं। एक सरणी अनुक्रमणिका का उपयोग करते समय पॉइंटर प्राप्त करने के लिए: आप 1) सूचक ऑफसेट की गणना कर रहे हैं, फिर 2) उस स्मृति स्थान पर मान प्राप्त करना, फिर 3) आपको पता फिर से प्राप्त करने के लिए & का उपयोग करना होगा। यह अधिक टाइपिंग और कम साफ वाक्यविन्यास है।
उदाहरण 1:
char buffer[1024];
char *p = &buffer[512];
उदाहरण 2:: मान लीजिए कि आप एक बफर में 512th बाइट के लिए सूचक आवश्यकता है
char buffer[1024]
char *p = buffer + 512;
से क्लीनर है अधिक कुशल strcat
char buffer[1024];
strcpy(buffer, "hello ");
strcpy(buffer + 6, "world!");
char buffer[1024];
strcpy(buffer, "hello ");
strcpy(&buffer[6], "world!");
++ सूचक अंकगणित का प्रयोग पुनरावर्तक के रूप में:इस से क्लीनर है
++ के साथ संकेत Incrementing, और साथ decrementing - उपयोगी होता है जब में प्रत्येक तत्व से अधिक पुनरावृत्ति तत्वों की एक सरणी। ऑफसेट का ट्रैक रखने के लिए इस्तेमाल किए गए एक अलग चर का उपयोग करने से यह क्लीनर है।
सूचक घटाव:
आप सूचक अंकगणित के साथ सूचक घटाव का उपयोग कर सकते हैं। इससे पहले कि आप जिस बिंदु पर इंगित कर रहे हैं उससे पहले तत्व प्राप्त करने के लिए यह कुछ मामलों में उपयोगी हो सकता है। यह सरणी सबस्क्रिप्ट के साथ भी किया जा सकता है, लेकिन यह वास्तव में खराब और भ्रमित लग रहा है। विशेष रूप से एक अजगर प्रोग्रामर के लिए जहां सूची के अंत से सूचकांक को नकारात्मक सबस्क्रिप्ट दिया जाता है।
स्रोत
2009-03-28 17:23:20
लेकिन आपके पास अभी भी चर की कुल संख्या है। – Uri
आप जानते हैं, दूसरे उदाहरण के लिए ** ** क्लीनर ** चीज करना 'स्प्रिंटफ (बफर, "% s% s", "हैलो", "वर्ल्ड!") होगा। –
@sgm, और महंगा –