TheRammer Δημοσ. 23 Νοεμβρίου 2014 Δημοσ. 23 Νοεμβρίου 2014 (επεξεργασμένο) Το προγραμμα μου δουλευει κανονικά σε Linux αλλα κανει crash σε Windows . υποθέτω εχει να κανει με τα pointers αλλα δεν εχω ιδεα πως να το φτιαξω void MakeSubArray(int *result,int a[],int p) { int r[p]; for(int c=0;c<p;c++) { r[c]=a[c]; if(c<=p) { result[c]=r[c]; } } } int main() { int size=13; int sequence[]={1,9,8,6,4,8,7,3,2,80,69,4,2}; for(int count =0;count<size;count++) { if(count>=1) { int * sub = (int*)malloc(count); MakeSubArray(sub,sequence,count); } } return 0; } BTW Χρησιμοποιώ MinGw για windows Επεξ/σία 23 Νοεμβρίου 2014 από TheRammer
ditsikts Δημοσ. 23 Νοεμβρίου 2014 Δημοσ. 23 Νοεμβρίου 2014 στη δήλωση της συνάρτησης το result νομίζω θέλει & αντί για *. // passing parameters by reference #include <iostream> using namespace std; void duplicate (int& a, int& b, int& c) { a*=2; b*=2; c*=2; } int main () { int x=1, y=3, z=7; duplicate (x, y, z); cout << "x=" << x << ", y=" << y << ", z=" << z; return 0; } ετσι μου το είχαν δείξει...
imitheos Δημοσ. 23 Νοεμβρίου 2014 Δημοσ. 23 Νοεμβρίου 2014 Παραβλέποντας την ανάποδη περιγραφή που σου τόνισε και ο άλλος φίλος και ότι ο κώδικας δεν είναι (ακόμη τουλάχιστον) C++ αλλά είναι C και ότι δεν καταλαβαίνω γιατί το λύνεις έτσι, δες το παρακάτω σημείο. int * sub = (int*)malloc(count); BTW Χρησιμοποιώ MinGw για windows Η malloc εκχωρεί μνήμη για count bytes όχι για count ακεραίους.
TheRammer Δημοσ. 23 Νοεμβρίου 2014 Μέλος Δημοσ. 23 Νοεμβρίου 2014 Παραβλέποντας την ανάποδη περιγραφή που σου τόνισε και ο άλλος φίλος και ότι ο κώδικας δεν είναι (ακόμη τουλάχιστον) C++ αλλά είναι C και ότι δεν καταλαβαίνω γιατί το λύνεις έτσι, δες το παρακάτω σημείο. Η malloc εκχωρεί μνήμη για count bytes όχι για count ακεραίους. Thanks a lot , Ξεχασα λιγο την λειτουργια της "malloc" . τωρα το αλλαξα σε "(int*)malloc(count*4);" (4 εινα το μεγεθος int σε bytes) και δουλεψε κανονικά
imitheos Δημοσ. 23 Νοεμβρίου 2014 Δημοσ. 23 Νοεμβρίου 2014 (4 εινα το μεγεθος int σε bytes) Πώς ξέρεις ότι είναι 4 το μέγεθος ? 3
TheRammer Δημοσ. 27 Νοεμβρίου 2014 Μέλος Δημοσ. 27 Νοεμβρίου 2014 Πώς ξέρεις ότι είναι 4 το μέγεθος ? Uhmmm γιατι ο τυπος μεταβλητης "int" χρησημοποιεί πάντα 4 bytes μνημηςς
georgemarios Δημοσ. 27 Νοεμβρίου 2014 Δημοσ. 27 Νοεμβρίου 2014 Uhmmm γιατι ο τυπος μεταβλητης "int" χρησημοποιεί πάντα 4 bytes μνημηςς Στο συστημα σου μπορει. Αλλα ποτε δε μπορεις να εισαι σιγουρος για το μεγεθος που εχει ενας τυπος οποτε παντα να χρησιμοποιεις το sizeof(). Δηλ στη περιπτωση σου int * sub = (int*)malloc(count * sizeof(int));
georgemarios Δημοσ. 27 Νοεμβρίου 2014 Δημοσ. 27 Νοεμβρίου 2014 Το σωστο ειναι new int[count] Σε c++ εντελως ναι. Ο φιλος μας θελει σκετη C. Ακυρο, τωρα προσεξα τον τίτλο. Οποτε ναι, σωστος, ετσι, ναι.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα