सी समाधान:
सी में आप सरणी आकार छोड़ नहीं कर सकता (वाम-पंथी को छोड़कर) जब समारोह पैरामीटर के रूप में पारित करने।
आप लिख सकते हैं: पूर्णांक एक []
लेकिन नहीं कर सकते हैं: पूर्णांक एक [] []
सिर्फ उदाहरण के लिए: पूर्णांक एक [] [20]
यह बाधा यहां है, क्योंकि कंपाइलर को सरणी तत्वों तक पहुंचने के लिए उचित ऑफ़सेट निर्धारित करने की आवश्यकता है। हालांकि, आप इसे इस तरह से बना सकते हैं:
void print_arbitrary_2D_array(void *arr, int y, int x)
{
/* cast to 2D array type */
double (*p_arr)[y][x] = (double (*)[y][x]) arr;
int i, j;
for (i = 0; i < y; ++i) {
for (j = 0; j < x; ++j)
printf(" %lf", (*p_arr)[i][j]);
putchar('\n');
}
}
double arr_1[4][3] = {
{ 3.3, 5.8, 2.3 },
{ 9.1, 3.2, 6.1 },
{ 1.2, 7.9, 9.4 },
{ 0.2, 9.5, 2.4 }
};
double arr_2[2][5] = {
{ 3.6, 1.4, 6.7, 0.1, 4.2 },
{ 8.4, 2.3, 5.9, 1.4, 8.3 }
};
print_arbitrary_2D_array(arr_1, 4, 3);
putchar('\n');
print_arbitrary_2D_array(arr_2, 2, 5);
int ** मैट्रिक्स सिंटैक्स होगा जिसे आप ढूंढ रहे हैं। –
यदि आप लोगों को मनमाने ढंग से आकार के मैट्रिक्स से गुज़रने वाले हैं, तो उन्हें # पंक्तियों और स्तंभों को भी पास कर दें। या, वैकल्पिक रूप से, 'std :: vector> ' –
birryree
@SteveHoward ए 2 डी सरणी C++ में पॉइंटर पर पॉइंटर को क्षय नहीं करता है। – Mahesh