int main(int argc, char *argv[]) {
char** c1 = {"Hey","Hello"};
printf("%s",c1[1]);
} //error
उपरोक्त कोड में, आप दो तारों के सेट पर पॉइंटर को पॉइंटर सेट करने का प्रयास कर रहे हैं। दो बिंदुओं के लिए भंडारण कहां है जिसमें "हे" और "हैलो" का पता क्रमशः है? कहीं भी नहीं।
आप कर सकता है:
char *a = "Hey";
char *b = "Hello";
char *c[] = { a, b }; // This MAY not compile due to a and b not being compile time constants.
char **c1 = c;
(मैं और अधिक अलग-अलग चर में इसे विभाजित कर दिया है यह वास्तव में जरूरत है की तुलना में है, लेकिन मैं यह बताता है कि आपके कोड के साथ "गलत" काफी स्पष्ट रूप है लगता है)।
const int a = 1;
const int b = 2;
int c[] = { a, b };
int *c = { a, b }; // Doesn't work, there is nowhere to store a copy of a and b.
यह एक ही बात है पूर्णांकों के साथ छोड़कर:
एक और उदाहरण है कि अगर हम char *
बदलने int करने के लिए किया जाएगा।
स्रोत
2013-04-10 12:49:14
पॉइंटर्स सरणी नहीं हैं। –