मुझे पॉइंटर्स का सिद्धांत विशेष रूप से परेशानी नहीं मिलती है, लेकिन मुझे कभी-कभी कुछ संकेतों से झुका हुआ है। निम्नलिखित उदाहरण में, कोई बता सकता है कि लाइन p = (int*) a
कैसे काम करती है। कोड के मेरे पास स्पष्टीकरण से पता चलता है कि यह लाइन पॉइंटर पी में पहली सरणी के पहले तत्व के पते को संग्रहीत करती है, जैसे printf("%u", *p)
उपज 5
उत्पन्न करती है। यदि यह मामला है तो यह लाइन p = a[0]
लिखने का एक और अप्रत्यक्ष तरीका है?सूचक नोटेशन
int main()
{
int a[][4] = {
5, 7, 5, 9,
4, 6, 3, 1,
2, 9, 0, 6
};
int *p; // create an integer pointer
int (*q)[4]; // create a pointer to a four-element integer array
p = (int*)a; // ?
q = a;
printf("%u %u\n", p, q);
p++;
q++;
printf("%u %u\n", p, q);
return 0;
}
इस तरह के एक पूर्ण जवाब के लिए धन्यवाद। हालांकि मुझे पता था कि मैं 2-डी सरणी के साथ काम कर रहा था, मैंने सराहना नहीं की थी कि सूचक और एक [0] एक साधारण [int] सूचक के बजाय [इंट्स की सरणी] के लिए सूचक था। मैंने इस तथ्य को भी याद किया कि कुछ कास्टिंग चल रहा था। यह एक बहुत उपयोगी जवाब था। –