के बीच क्या अंतर है (पूर्णांक *)सरणी (पूर्णांक *)&सरणी और सरणी में एक सूचक असाइनमेंट?

0

सवाल

मैं कोड की 3 लाइनों करता है कि वास्तव में एक ही है लेकिन अलग अलग वाक्य रचना, आधार कोड जा रहा है:

    int a, b;
    printf("Enter the size of your array [a][b]: ");
    scanf("%d %d", &a, &b);
    int arr[a][b];

    int *pa;

    pa = (int *)&arr;
     
    for (i = 0; i < a*b; i++)
    {
        printf("[%d] [%d] = ", i/b, i%b);
        scanf("%d", (pa + i));
    }

लाइन पर pa = (int *)&arr;, मैं स्विच कर सकते हैं कि करने के लिए लाइन (int *)array, (int *)&arrayहै , और &array के बिना किसी भी मुद्दे का सामना है, केवल अनुभव में एक चेतावनी पिछले एक. मैं सोच रहा था कि सही वाक्य रचना है और के बीच अंतर के सभी 3 उन्हें.

arrays c pointers
2021-11-24 05:02:40
2
0
  • सही वाक्य रचना है pa = &arr[0]; और यदि आप पाते हैं अपने आप को जोड़ने की जरूरत है एक डाली के साथ, आप कुछ गलत कर रहे हैं. दो टूक शब्दों में कहें, अगर आप अभी शुरुआत कर रहे हैं, आप नहीं होना चाहिए कास्टिंग संकेत है ।

  • pa = &arr नहीं करता है "केवल एक चेतावनी दे", यह अमान्य C. यह एक तथाकथित बाधा उल्लंघन - अवैध काम के गैर-संगत सूचक प्रकार के । कृपया अध्ययन क्या संकलक विकल्प की सिफारिश कर रहे हैं के लिए सीखने के शुरुआती सी है? और क्या चाहिए एक सी संकलक करते हैं जब यह पाता है एक त्रुटि?

  • इसी तरह, pa = (int *)&array है कोई अमान्य सूचक रूपांतरण के बीच गैर-संगत प्रकार के । यह संकलन होगा, लेकिन एक संकलक-विशिष्ट परिणाम. इसे सख्ती से बोल रहा हूँ गलत कोड लेकिन हो सकता है काम के लिए विशिष्ट संकलक और प्रणाली है ।

  • pa = (int *)array गलत है के लिए इसी तरह के कारणों से भी - के बाद से array गला है में करने के लिए एक सूचक सरणी प्रकार है, जो के साथ संगत नहीं है int*.

2021-11-24 10:23:55

अगर मैं बस क्या पा = arr; यह मुझे देता है एक "[त्रुटि] काम से असंगत सूचक प्रकार". जब मैंने पूछा कि मेरे शिक्षक के बारे में, यह है कि वह क्या मुझे पता चला. कैसे मैं बस ठीक है कि के साथ मेरे आधार कोड के ऊपर?
Minh Nguyen

@MinhNguyen आह मेरा बुरा है, मैं नोटिस नहीं किया था, यह था एक 2D सरणी. अद्यतन करेगा जवाब.
Lundin

Thankies,का एक नोट कर देगा कि अगली बार के लिए मैं क्या किसी चीज़ की तरह है कि
Minh Nguyen
0

दो महत्वपूर्ण जानकारियों:

  1. पते की एक सरणी का पता है अपनी पहली तत्व है ।
  2. जब इलाज के रूप में एक सूचक, एक सरणी degrades में एक सूचक के लिए अपनी पहली तत्व

तो,

  1. pa = arr;
    

    करने के लिए बराबर है

    pa = &(arr[0]);   // Type mismatch: RHS is int (*)[b]
    

    आप का उपयोग एक समान किरदार के लिए मौन त्रुटि कर रही है जब pa = (int *)arr;.

  2. pa = &arr;
    

    करने के लिए बराबर है

    pa = &(arr[0]);   // Type mismatch: RHS is int (*)[b]
    

    आप का उपयोग एक समान किरदार के लिए मौन त्रुटि कर रही है जब pa = (int *)&arr;.

इन typecasts सुरक्षित नहीं हैं. अगर आप का इलाज करना चाहते हैं के रूप में यह एक -1 डी सरणी के int मूल्यों के लिए, सबसे अच्छा यह घोषणा भी है कि जिस तरह.

2021-11-24 08:04:28

अन्य भाषाओं में

यह पृष्ठ अन्य भाषाओं में है

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

इस श्रेणी में लोकप्रिय

लोकप्रिय सवाल इस श्रेणी में