Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11

Discussione: funzioni e memoria

  1. #1
    Utente di HTML.it
    Registrato dal
    May 2015
    Messaggi
    18

    [C] funzioni e memoria

    Buongiorno a tutti, avrei una domanda da fare riguardo il valore di ritorno di una funzione:
    Se una funzione ritorna un valore in quale area di memoria viene immagazzinato il valore?

    grazie mille
    Ultima modifica di linofex; 06-06-2015 a 10:32

  2. #2
    Utente di HTML.it L'avatar di linoma
    Registrato dal
    Mar 2010
    Messaggi
    1,346
    per convenzione di usa il registro accumulatore o quello che prende il posto in quell'architettura. Nulla vieta di usare lo stack
    Per gli Spartani e Sparta usa spartan Il mio github

  3. #3
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    Dipende dalle convenzioni di chiamata che stai utilizzando.
    Le convenzioni di chiamata che stai utilizzando dipendono da tante cose, prima fra tutte l'architettura hw.
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  4. #4
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    Quote Originariamente inviata da linoma Visualizza il messaggio
    per convenzione di usa il registro accumulatore o quello che prende il posto in quell'architettura. Nulla vieta di usare lo stack
    È scorretto legarsi al concetto di registro accumulatore che può non esistere in una data architettura.
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2015
    Messaggi
    18
    Quote Originariamente inviata da linoma Visualizza il messaggio
    per convenzione di usa il registro accumulatore o quello che prende il posto in quell'architettura. Nulla vieta di usare lo stack
    grazie mille per la risposta.
    ho trovato questa riposta nelle slide del mio corso:
    Il valore restituito (se presente) viene scambiatousando un registro del processore come variabilecondivisa. Solo che non la riesco a capire del tutto, cioè, al livello di logica mi torna ma sento di non essere sicuro.. potresti magari basandoti sulla mia riposta riformularne una nuova? grazie mille

  6. #6
    Utente di HTML.it L'avatar di linoma
    Registrato dal
    Mar 2010
    Messaggi
    1,346
    una definizione prettamente teorica arricchita di dettagli che alla logica non servono.É anche carente di concetti eludendo le motivazioni dell'uso di un registro al posto di un altro. È ancora buono lo spunto dato nella precedente risposta
    Per gli Spartani e Sparta usa spartan Il mio github

  7. #7
    Utente di HTML.it L'avatar di MySQL
    Registrato dal
    May 2015
    Messaggi
    729
    La risposta è: nei processori odierni, cioè quelli che materialmente si usano, il valore è ritornato in un registro della CPU.
    Tutto il resto (uso dello stack, inesistenza di registri etc.etc.) sono tutti aspetti teorici-accademici

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2015
    Messaggi
    18
    Quote Originariamente inviata da MySQL Visualizza il messaggio
    La risposta è: nei processori odierni, cioè quelli che materialmente si usano, il valore è ritornato in un registro della CPU.
    Tutto il resto (uso dello stack, inesistenza di registri etc.etc.) sono tutti aspetti teorici-accademici
    Grazie mille!

    Avrei anche un'altra domanda che è un po' off topic, ma vista la sua banalità non credo meriti una nuova discussione (se comunque non si possono fare altre domande non fa nulla, in questo caso, metto RISOLTO e chiudo):

    sempre nelle slide ho questa funzione:

    void swap(int *, int *); //questa funzione scambia due valori
    per chiamarla:
    swap(&a,&b); //a e b due variabili assegnate;

    La domanda è: il passaggio di parametri di che tipo è? leggendo nelle vostre lezioni ho dedotto che NON è per riferimento.
    Nelle slide dice: l'inizializzazione dei puntatori come parametri formali avviene attraverso il passaggio di parametri per valore con la chiamata della funzione, ma non sono convinto, inquanto sempre riguardo alla vostra lezione, il passaggio sarebbe per indirizzo. Solo che la professoressa e anche nel libro viene citato solo "riferimento" e valore". Potreste chiarmi anche questo problemino? grazie
    Ultima modifica di linofex; 06-06-2015 a 18:09

  9. #9
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    E' un passaggio per valore di un puntatore a intero.

    &a restituisce l'indirizzo della variabile a, che viene passato per valore.
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  10. #10
    Utente di HTML.it
    Registrato dal
    May 2015
    Messaggi
    18
    Quote Originariamente inviata da Scara95 Visualizza il messaggio
    E' un passaggio per valore di un puntatore a intero.

    &a restituisce l'indirizzo della variabile a, che viene passato per valore.
    grazie ancora. praticamente l'indirizzo di a è il valore del puntatore a intero?
    Però allora non ho capito il passaggio per indirizzo. lezione.
    Ultima modifica di linofex; 06-06-2015 a 18:32

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.