मेरे पास निम्न प्रोग्राम है। हालांकि, मुझे समझ में नहीं आ रहा है कि मुझे सरणी का पता क्यों पारित करना है। जब वे दोनों एक ही पते पर इशारा करते हैं। Int की सरणी के पहले तत्व का पता कौन सा है।मैं सीधे सी में पॉइंटर को सरणी क्यों नहीं दे सकता?
मैं एक चेतावनी मिलती है जब मैं कोशिश करते हैं और इस "असंगत सूचक प्रकार से काम" करते हैं:
ptr = var;
पूरा स्रोत कोड:
void print_values(int (*ptr)[5])
{
size_t i = 0;
for(i = 0; i < 5; i++) {
printf("%d: [ %d ]\n", i, (*ptr)[i]);
}
}
int main(void)
{
/* declare a pointer to an array integers */
int (*ptr)[5] = NULL;
/* array of integers */
int var[] = {1, 2, 3, 4, 5};
/* assign the address of where the array is pointing to (first element) */
ptr = &var;
/* Both are pointing to the exact same address */
printf("var [ %p ]\n",(void*)var);
printf("&var [ %p ]\n", (void*)&var);
print_values(ptr);
return 0;
}
मैं gcc 4.4.4 c89 -Wall -Wextra -O0
मैंने आपके शीर्षक को फिर से शुरू करने का प्रयास किया, क्योंकि यह अर्थहीन था। कृपया, सत्यापित करें कि मैंने आपकी समस्या का सही ढंग से चयन किया है या नहीं। –
मुझे लगता है कि आपका शीर्षक मेरी तुलना में बेहतर लगता है। धन्यवाद। – ant2009
आप कोड स्निपेट ठीक संकलित करता है। क्या आपका मतलब है कि अगर आप मुख्य रूप से 'ptr = var' जोड़ते हैं तो आपको एक त्रुटि मिलेगी? –