में पॉइंटर्स की सरणी को पॉइंटर घोषित करने के लिए पॉइंटर्स और सी के लिए नया और मेरे प्रोग्राम के लिए structs की सरणी के लिए एक सूचक की आवश्यकता है और इस पॉइंटर को फ़ंक्शन में पास करने में सक्षम हो।सी
संरचना सरणी प्रकार के सूचक को घोषित करने का सही तरीका क्या है और मेरा फ़ंक्शन पैरामीटर क्या होना चाहिए जो इस सूचक को ले सकता है?
यह मेरा प्रयास है:
#define HAND_SIZE 5
struct Card {
char suit;
char face;
};
void printHandResults(struct Card *hand[HAND_SIZE]);
int main(void)
{
struct Card hand[HAND_SIZE];
struct Card (*handPtr)[HAND_SIZE]; //Correct way to declare?
handPtr = &hand;
...
printHandResults(handPtr);
}
void printHandResults(struct Card *hand[HAND_SIZE]) {
...
}
और यह चेतावनी मैं मिलता है:
warning: incompatible pointer types passing 'struct Card (*)[5]' to parameter of type 'struct Card **' [-Wincompatible-pointer-types]
मुझे समझ में संकेत दिए गए विभिन्न प्रकार हैं, लेकिन मैं नहीं कर सकते यह पता लगाने की इसे सही ढंग से स्थापित करने के लिए कैसे लग रहे हैं ।
अगर कोई मुझे सही दिशा में इंगित कर सकता है तो मैं सराहना करूंगा।
void printHandResults(struct Card (*hand)[]);
और इस:
Arrays स्वचालित रूप से पॉइंटर्स बन जाते हैं जब वे किसी फ़ंक्शन पर जाते हैं, तो आपको इसके लिए एक अलग चर की आवश्यकता नहीं होती है। – Barmar
'स्ट्रक्चर कार्ड * हाथ [HAND_SIZE] 'पॉइंटर्स की एक सरणी है, एक सरणी के लिए सूचक नहीं है। – Barmar
आपके रास्ते में हैंडपीआरआर पॉइंटर की सरणी है। क्यों आप प्रिंट करने के लिए पास नहीं करेंगे और हैंडसेट्स? –