X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=process.tex;h=5114b01e40125dba4ab8ed3f3cd436f5471d4893;hp=d3fa51d41ca3f9f6e280dd3d4056a61af62507eb;hb=16e64b5dbce90526045cf9c0c95690c08d64a2dc;hpb=0726315ca76d6655e232a0fafd82d524d133187d diff --git a/process.tex b/process.tex index d3fa51d..5114b01 100644 --- a/process.tex +++ b/process.tex @@ -961,14 +961,26 @@ Il passaggio di una variabile \textit{by value} significa che in realt che viene passato alla subroutine è una copia del valore attuale di quella variabile, copia che la subroutine potrà modificare a piacere, senza che il valore originale nella routine chiamante venga toccato. In questo modo non -occorre preoccuparsi di eventuali effetti delle operazioni della subroutine. +occorre preoccuparsi di eventuali effetti delle operazioni della subroutine +sulla variabile passata come parametro. -La maggior parte delle funzioni di libreria e delle system call funziona -esattamente in questo modo restituendo eventuali risultati alla routine -chiamante attraverso il valore di ritorno. Talvolta però è necessario che la -funzione possa restituire indietro alla funzione chiamate un valore relativo -ad uno dei sui parametri. +Questo però va inteso nella maniera corretta. Il passaggio \textit{by value} +vale per qualunque variabile, puntatori compresi; quando però in una +subroutine si usano dei puntatori (ad esempio per scrivere in un buffer) in +realtà si va a modificare la zona di memoria a cui essi puntano, per cui anche +se i puntatori sono copie, i dati a cui essi puntano sono sempre gli stessi, e +le eventuali modifiche avranno effetto e saranno visibili anche nella routine +chiamante. +Nella maggior parte delle funzioni di libreria e delle system call i puntatori +vengono usati per scambiare dati (attraverso buffer o strutture) e le +variabili semplici vengono usate per specificare parametri; in genere le +informazioni a riguardo dei risultati vengono passate alla routine chiamante +attraverso il valore di ritorno. Talvolta però è necessario che la funzione +possa restituire indietro alla funzione chiamate un valore relativo ad uno dei +suoi parametri. Per far questo si usa il cosiddetto \textit{}. Pertanto occorre +tenere conto che quando si vuole restituire un risultato alla funzione +chiamante occorre usare un puntatore. @@ -976,6 +988,7 @@ ad uno dei sui parametri. \label{sec:proc_auto_var} + \subsection{Il controllo di flusso non locale} \label{sec:proc_longjmp}