Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Pointers VS Arrays C++

Îåêßíçóå áðü ôï ìÝëïò nettraptor1. Τελευταία δημοσίευση από το μέλος Νατάσα Μανουσοπούλου στις 26-02-2007, 19:42. Υπάρχουν 3 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  26-02-2007, 12:13 25440

    Pointers VS Arrays C++

    Προσπαθώ να ορίσω ενα pointer σε εναν δισδιάστατο πίνακα τύπου int αλλα δεν τα καταφέρνω.....
    στην συνέχεια θα δώσω αυτον τον pointer σαν μεταβλητή σε κάποια function ....


    HElp!!


    int _tmain(int argc, _TCHAR* argv[])
    {
        
        int i,j;
        int pinakas[30][60];
        int *p;

        for (i=0;i<30;i++)
            for(j=0;j<60;j++)
            pinakasIdea[j] = i*342;
        
        p=pinakas;
        
    }
    Error    1    error C2440: '=' : cannot convert from 'int [30][60]' to 'int *'    




  •  26-02-2007, 12:24 25443 σε απάντηση της 25440

    Απ: Pointers VS Arrays C++

    εαν κάνω την εξής δήλωση int (*p)[60]; τότε θα παίξει...


    int _tmain(int argc, _TCHAR* argv[])
    {
       
        int i,j;
        int pinakas[30][60];
        int (*p)[60];

        for (i=0;i<30;i++)
            for(j=0;j<60;j++)
            pinakasIdea[j] = i*342;
       
        p=pinakas;
       
    }


    αλλά πώς θα πρσπελάσω και τις 1800 τιμές του πίνακα?
  •  26-02-2007, 17:39 25456 σε απάντηση της 25443

    Απ: Pointers VS Arrays C++

    int pinakas[30][60];

    int* p;

    for (int k=0;k<30;k++)

    {

       for(int j=0;j<60;j++)

       {

          pinakas[k][j] = k*342;

       }

    }

    p=&pinakas[3][4];


    Sometimes the best solution to morale problems is just to fire all of the unhappy people.
  •  26-02-2007, 19:42 25469 σε απάντηση της 25440

    Απ: Pointers VS Arrays C++

    Αν θέλεις να περάσεις τον πίνακά σου σαν παράμετρο, πρέπει να τον περάσεις σαν int [30][60] ή σαν int[][60] που αντιμετωπίζονται με τον ίδιο τρόπο. Και τα δύο είναι pointers, και πρέπει να περάσεις και το μέγεθος του array σαν παράμετρο. Π.χ.

    void test(int x[][60], unsigned size)
    {
      printf("%u,%u,%u\n", sizeof(x), sizeof(*x)/sizeof(**x), size);
    }

    int _tmain(int argc, _TCHAR* argv[])
    {
      int x[30][60];
      test(x, sizeof(x)/sizeof(x[0]));
      return 0;
    }


    Δίνοντας το μέγεθος σαν sizeof(x)/sizeof(x[0]) δε χρειάζεται να το πειράξεις αν αλλάξει το μέγεθος του array.

    Νατάσα Μανουσοπούλου
    Δημοσίευση στην κατηγορία: ,
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems