HaPagan Δημοσ. 2 Ιουνίου 2004 Δημοσ. 2 Ιουνίου 2004 Χαίρετε ! Χρειάζομαι σε ένα πρόγραμμα σε C το μήκος ενός πίνακα να είναι μεταβλητό . Έτσι , φαντάζομαι ότι απαιτείται η χρήση δεικτών . Αλλά το θέμα είναι ότι ποτέ δεν τα πήγαινα καλά με τους δείκτες και θα ήθελα την βοήθειά σας . Δηλαδή θα ήθελα να κάνω κάτι τέτοιο : > ....... int n; int MyArray[n]; scanf("%d",&n); ....... Δηλαδή να εισάγει ο χρήστης το μήκος του πίνακα . Πως μπορώ να το κάνω αυτό ; Ευχαριστώ εκ των προτέρων .
skyline_gr Δημοσ. 2 Ιουνίου 2004 Δημοσ. 2 Ιουνίου 2004 > int n; int * myarray; scanf("%d",&n); myarray=malloc(n*sizeof(int));
HaPagan Δημοσ. 2 Ιουνίου 2004 Μέλος Δημοσ. 2 Ιουνίου 2004 Ευχαριστώ! Αλλά μου βγάζει λάθος . Άσε που μετά σε ένα if , συγκρίνω κάποια τιμή του πίνακα με έναν ακέραιο και μου λέει ότι απαγορεύεται η σύγκριση δείκτη με ακέραιο . Κάποια λύση ;
skyline_gr Δημοσ. 2 Ιουνίου 2004 Δημοσ. 2 Ιουνίου 2004 Τι λάθος βγάζει. Τι προσπαθέις να κάνεις και βγάζει λάθος? Γράψε το τμήμα κώδικα Να ένα παράδειγμα : >#include<stdio.h> #include<conio.h> #include<stdlib.h> int main(int argc, char* argv[]) { int n; int * a; int i; printf("Dwse pli8os 8esewn : "); scanf("%d", &n); a=malloc(n*sizeof(int)); for(i=0; i<n; i++) a[i]=i*i; for(i=0; i<n; i++) if ((a[i]==4) || (a[i]==16)) printf("\na[%d] = %d", i, a[i]); printf("\na[%d] = %d", i-1, a[i-1]); getch(); free(a); return 0; }
xaotikos Δημοσ. 2 Ιουνίου 2004 Δημοσ. 2 Ιουνίου 2004 myarray=(int*)malloc(n*sizeof(int)); try this. Φυσικά μετά πρέπει να κάνεις και το ανάλογο free(myarray);
nucleus Δημοσ. 3 Ιουνίου 2004 Δημοσ. 3 Ιουνίου 2004 h malloc einai arketa epikindynh synarthsh gia na thn xrhsimopoieis thelei prosoxh. des mia kai thn calloc void *calloc(size_t nobj, size_t size) h calloc epistrefei ena deikth se ena xoro ths mnhmhs gia enan pinaka nobj antikeimenon, megethoys size to kathena h NULL an den mporei na ikanopoihthei h aithsh. ta byte toy xoroy mnhmhs pairnoyn arxikh timh mhden
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.