Αbominable Δημοσ. 21 Απριλίου 2010 Δημοσ. 21 Απριλίου 2010 Αν και από την μικρή αναζήτηση που έκανα στο google δεν βρήκα κάτι συγκεκριμένο. Αναρωτιέμαι εαν υπάρχει σε C κάποια δυνατότητα να γίνει συνέννωση διαφορετικών πινάκων σε 1. Π.χ. > int array1[] = {1, 2, 3, 4}; int array2[] = {5, 6, 7, 8}; int array3[] = {array1, array2}; // array3 = {1, 2, 3, 4, 5, 6, 7, 8} Αυτό είναι προφανώς λάθος, απλά για να δείξω τι θέλω να κάνω. Ευχαριστώ πολύ.
nikolaos_ Δημοσ. 21 Απριλίου 2010 Δημοσ. 21 Απριλίου 2010 Σπαζοκεφαλιά μου φαίνεται, σε σκέτη C. Στην αρχικοποίηση όπως το γράφεις ξέχνα το. Θα βάλεις for οπωσδήποτε στον κώδικα. Αν μπορούσες να αντιστοιχίσεις την διεύθυνση &array2[0] αμέσως μετά την &array1[k] (όπου k=3) τότε με *array3=*array1 πιθανόν να δούλευε. > int array1[8]={1,2,3,4}; /* Δε ξέρω αν δουλεύει */ int array2[]={5,6,7,8}; int i,k=4; for(i=k;i<8;i++) array1[i]=array2[i-k]; Αυτό σημαίνει ότι κάπου έχεις φτιάξει μια μεταβλητή k που συγκρατεί τον τελευταίο δείκτη του array1. Αλλά στην πράξη χρειάζεσαι την πληροφορία για τελευταίο στοιχείο και στα δυο array1[] και array2[]. > #define N 255 int concatenated[N]; int array1[]={1,2,3,4}; int array2[]={5,6,7,8}; int i; int u1=4, u2=4; /* upper bounds */ for(i=0;i<u1;i++) concatenated[i]=array1[i]; for(i=0;i<u2;i++) concatenated[i+u1]=array2[i]; Τελευταία ιδέα στην αρχικοποίηση, ξεκινάς με το concatenated array και το "σπας". Δοκίμασε: > int array3[]={1,2,3,4,5,6,7,8}; /* already concatenated */ int *array1, *array2; array1=&array3[0]; array2=&array3[4]; Αν δουλέψει (δε παίρνω και όρκο) έχεις γλιτώσει τη for.
Αbominable Δημοσ. 21 Απριλίου 2010 Μέλος Δημοσ. 21 Απριλίου 2010 Ευχαριστώ για την απάντηση. Ψάχνω εάν υπάρχει εγγενής συνάρτηση. Αλλά από την απάντηση σου καταλαβαίνω πως όχι. Θα το κάνω με array δεικτών.
virxen75 Δημοσ. 21 Απριλίου 2010 Δημοσ. 21 Απριλίου 2010 μπορείς να το κάνεις έτσι > #include <stdio.h> #include <string.h> int main (){ int str1[[color="Red"]7[/color]]={1,2,3,4,5,6,7}; int str2[[color="Blue"]8[/color]]={31,32,33,34,35,36,37,38}; int str3[15];//[color="Red"]7[/color]+[color="Blue"]8[/color]=15 memcpy (str3,str1,sizeof(int)*[color="Red"]7[/color]); memcpy (&str3[[color="Red"]7[/color]],str2,sizeof(int)*[color="Blue"]8[/color]); for (int i=0;i<15;i++) printf("\n%d--> , %d",i,str2[i]); getchar(); return 0; }
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.