Array automatico, array allocato dinamicamente

di il
8 risposte

Array automatico, array allocato dinamicamente

Nella correzione che viene fatta nella soluzione, non mi e' chiaro il perche' viene fatta la scelta di allocare dinamincamente l'array, invece di farlo restare come Array automatico?

Aggiungo una mia deduzione, che vorrei sapere se e' corretta....

Ma nel Void, l'allocazione deve essere sempre un allocazione Dinamica?

Provo a dare una mia giustificazione al fatto che l'allocazione deve essere dinamica.....

Siccome nella struct si ha un puntatore dichiarato
char *s;


questo ci fa capire che nel void non ci potrà essere un array automatico, in quanto la natura dei puntatori ci porta ad un'allocazione di tipo dinamica, quindi si passa da array automatico:
char stringa[15]; 


ad array allocato dinamicamente:
char *stringa; 
stringa = strdup("Avvio");


P.S. Ma non si potrebbe scrivere tutto su una stessa riga invece di due righe?
Cioè non si potrebbe scrivere così?
char *stringa = strdup("Avvio");



Allegati:
31893_2ca6e97bfebd4952474429396ee54677.jpg
31893_2ca6e97bfebd4952474429396ee54677.jpg

31893_5e9cffd5d0025d636db71f4be1b11283.jpg
31893_5e9cffd5d0025d636db71f4be1b11283.jpg

31893_675c3e430b7d8e4c476814361623c2b4.jpg
31893_675c3e430b7d8e4c476814361623c2b4.jpg

8 Risposte

  • Re: Array automatico, array allocato dinamicamente

    Ancora con questi strani esercizi? Quando inizi a programmare?

    Premesso che dalle foto si capisce poco, mi chiedo perché invece di postare tutto, non estrapoli il dubbio che ti ha suscitato l'esercizio e posti solo quello spiegando bene i contorni del problema? Magari inserendo il tutto in un breve codice che lo simuli in modo chiaro e conciso?
  • Re: Array automatico, array allocato dinamicamente

    Nippolo ha scritto:


    Premesso che dalle foto si capisce poco, mi chiedo perché invece di postare tutto, non estrapoli il dubbio che ti ha suscitato l'esercizio e posti solo quello spiegando bene i contorni del problema? Magari inserendo il tutto in un breve codice che lo simuli in modo chiaro e conciso?
    Mi associo e concordo perfettamente. E' l'ennesimo post dove vengono riportati testi di esercizi, riflessioni scritte a penna, simboli e diagrammi da decifrare per spiegare questo o quell'altro ragionamento, una sorta di tutoraggio a tempo continuato su qualsiasi esercizio venga dato, senza che vi sia un reale problema o errore in molti casi (o almeno, non evidente, salvo il mettersi lì e risolversi tutto l'esercizio per determinare se coincide o meno con la soluzione proposta), con il frequente blocco su questioni di lana caprina tipo il valore di -0 che, a un certo stadio scolastico, non dovrebbe costituire un motivo di dubbio (per fare un esempio).

    Pur considerando quanti avranno fatto lo stesso percorso e incontrato le medesime difficoltà, nessun altro utente del forum attualmente sta aprendo discussioni con questa modalità, arrivando in certi casi a situazioni imbarazzanti come quella di esporre informazioni altamente sensibili e personali per giustificare la modalità di partecipazione.

    Non essendo comunque né moderatore né proprietario del forum, io mi fermo qui, anche se rimango convinto che questa casistica sia un "unicum" a cui raramente si assiste...

    Buone cose!
  • Re: Array automatico, array allocato dinamicamente

    La questione che "nei void non è possibile..." non ha alcun senso ed è anche sbagliata nell'esposizione
    Non ti consiglio di ripetere cose del genere.

    Con i puntatori si usa l'allocazione dinamica ma non è questo il problema.

    Ti devi concentrare sul quesito dell'esercizio e fare ragionamenti sull'utilizzo degli indici, sulla vita degli array, sulla loro visibilità. Se farai ragionamenti fuori luogo, non potrai superare gli esami.
  • Re: Array automatico, array allocato dinamicamente

    La memoria allocata dinamicamente non viene deallocata all'uscita della funzione, quindi il puntatore alla stringa è ancora valido.
    Sì, ovviamente poteva fare tutto su una riga...

    Come ti hanno detto, inizia a scrivere tu qualche programma, perché informatica è scrivere e codificare algoritmi, non solo sviscerare il linguaggio C. A meno che l'esame non preveda solo questo.
  • Re: Array automatico, array allocato dinamicamente

    Alexv ha scritto:


    La memoria allocata dinamicamente non viene deallocata all'uscita della funzione, quindi il puntatore alla stringa è ancora valido.
    Sì, ovviamente poteva fare tutto su una riga...

    Come ti hanno detto, inizia a scrivere tu qualche programma, perché informatica è scrivere e codificare algoritmi, non solo sviscerare il linguaggio C. A meno che l'esame non preveda solo questo.
    L'80% della prova d'esame e' basata su queste modalita' di esercizi.
    Comunque vi ringrazio per i consigli!
  • Re: Array automatico, array allocato dinamicamente

    oregon ha scritto:


    La questione che "nei void non è possibile..." non ha alcun senso ed è anche sbagliata nell'esposizione
    Non ti consiglio di ripetere cose del genere.

    Con i puntatori si usa l'allocazione dinamica ma non è questo il problema.

    Ti devi concentrare sul quesito dell'esercizio e fare ragionamenti sull'utilizzo degli indici, sulla vita degli array, sulla loro visibilità. Se farai ragionamenti fuori luogo, non potrai superare gli esami.

    Ok, ti ringrazio oregon!
    Comprendo e confermo quello che mi dici in merito ai ragionamenti.....

    Ma considerando la risposta data nella soluzione, non riesco a capire il perche' si deve passare dalla chiamata di un array automatico ad un array allocato dinamicamente?

  • Re: Array automatico, array allocato dinamicamente

    Proprio perchè l'array automatico cessa di esistere al termine della funzione. Quello allocato dinamicamente no.

    Lo capiresti meglio se sapessi che uno vjene allocato sullo stack e l'altro sull'heap, cosa che probabilmente il professore ti chiederà
  • Re: Array automatico, array allocato dinamicamente

    oregon ha scritto:


    Proprio perchè l'array automatico cessa di esistere al termine della funzione. Quello allocato dinamicamente no.

    Lo capiresti meglio se sapessi che uno vjene allocato sullo stack e l'altro sull'heap, cosa che probabilmente il professore ti chiederà
    Grazie ancora Oregon!
    Apprendo quanto mi dici!
Devi accedere o registrarti per scrivere nel forum
8 risposte