Torna indietro   Hardware Upgrade Forum > Software > Programmazione

GIGABYTE GAMING A16, Raptor Lake e RTX 5060 Laptop insieme per giocare al giusto prezzo
GIGABYTE GAMING A16, Raptor Lake e RTX 5060 Laptop insieme per giocare al giusto prezzo
Il Gigabyte Gaming A16 offre un buon equilibrio tra prestazioni e prezzo: con Core i7-13620H e RTX 5060 Laptop garantisce gaming fluido in Full HD/1440p e supporto DLSS 4. Display 165 Hz reattivo, buona autonomia e raffreddamento efficace; peccano però le USB e la qualità cromatica del pannello. Prezzo: circa 1200€.
iPhone 17 Pro: più di uno smartphone. È uno studio di produzione in formato tascabile
iPhone 17 Pro: più di uno smartphone. È uno studio di produzione in formato tascabile
C'è tanta sostanza nel nuovo smartphone della Mela dedicato ai creator digitali. Nuovo telaio in alluminio, sistema di raffreddamento vapor chamber e tre fotocamere da 48 megapixel: non è un semplice smartphone, ma uno studio di produzione digitale on-the-go
Intel Panther Lake: i processori per i notebook del 2026
Intel Panther Lake: i processori per i notebook del 2026
Panther Lake è il nome in codice della prossima generazione di processori Intel Core Ultra, che vedremo al debutto da inizio 2026 nei notebook e nei sistemi desktop più compatti. Nuovi core, nuove GPU e soprattutto una struttura a tile che vede per la prima volta l'utilizzo della tecnologia produttiva Intel 18A: tanta potenza in più, ma senza perdere in efficienza
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 14-01-2004, 11:41   #1
DavidTwister
Senior Member
 
L'Avatar di DavidTwister
 
Iscritto dal: Mar 2003
Città: Roma
Messaggi: 1529
Passaggi di strutture e membri di strutture a funzioni in C!

Allora ragazzi,stò preparando l'esame di Programmazione in C....leggo sul libro:
"Le strutture possono essere passate alle funzioni fornendo:
1) i singoli membri;
2)l'intera struttura;
3)un puntatore alla stessa struttura".
Nel caso si passi una struttura o i suoi singoli membri,questi verranno passati per valore; al fine di passarli x riferimento, dovrete passare alla funzione l'indirizzo della variabile di struttura.


Le domande sono:

1)se voglio passare alla funzione, ad esempio, un membro di una variabile di tipo struttura per RIFERIMENTO, qual'è il modo corretto???
2)Mi fate un esempio in linguaggio C di una funzione che riceve come argomento una struttura intera1 e un membro di una struttura2 prima per riferimento, e poi della stessa funzione che le riceve per valore?

Grazie!
__________________

Ho concluso trattative positive con: Miky71- Maxus- Echirulli (x2)- Giullare- Flyawayrm- Astro76- Marlom- Manuel78- Sclergio- The Saint- Ippo 2001- Fabietto_18.
LA DROGA NON E' MAI LEGGERA: E' DROGA.
DavidTwister è offline   Rispondi citando il messaggio o parte di esso
Old 14-01-2004, 12:01   #2
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Scrivendomi un PVT hai solatanto aumentato al tua attesa...ti stavo rispondendo quando mi è arrivato il dialogo di apertura dei messaggi privati E' inutile mandarmi i PVT...i emssaggi della sezione me li leggo tutti

Codice:
struct s {
   int a;
   char b;
};

void f_valore_struttura(struct s st)
{
    printf("%d %c\n", st.a, st.b);
}

void f_riferimento_struttura(struct s *pst)
{
    printf("%d %c\n", pst->a, pst->b);
}

void f_valore_membri(int ma, char mb)
{
    printf("%d %c\n", ma, mb);
}

void f_riferimento_membri(int *pma, char *pmb)
{
    printf("%d %c\n", *pma, *pmb);
}

int main()
{
   struct s pippo;
   pippo.a = 10;
   pippo.b = 'a';
   
   f_valore_struttura(pippo);
   f_riferimento_struttura(&pippo);
   f_valore_membri(pippo.a, pippo.b);
   f_riferimento_membri(&pippo.a, &pippo.b);

   return 0;
}
Sinceramente preferisco chiamare quello che tu chiami "per riferimento" passaggio "per indirizzo"...
Se poi un giorno vedrai il C++ (o una versione aggiornata del C allo standard C99) capirai il perchè...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 14-01-2004, 12:05   #3
DavidTwister
Senior Member
 
L'Avatar di DavidTwister
 
Iscritto dal: Mar 2003
Città: Roma
Messaggi: 1529
ti ringrazio x gli esempi...ora me li leggo per bene e se ho qualche dubbio lo posto sul 3d...scusa se ti ho mandato un pvt ma il primo appello lo avrei domani...ecco il perchè della fretta!!!
__________________

Ho concluso trattative positive con: Miky71- Maxus- Echirulli (x2)- Giullare- Flyawayrm- Astro76- Marlom- Manuel78- Sclergio- The Saint- Ippo 2001- Fabietto_18.
LA DROGA NON E' MAI LEGGERA: E' DROGA.
DavidTwister è offline   Rispondi citando il messaggio o parte di esso
Old 14-01-2004, 12:13   #4
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Voi avete fatto così quello che chiamate "passaggio per riferimento" ?
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 14-01-2004, 12:17   #5
DavidTwister
Senior Member
 
L'Avatar di DavidTwister
 
Iscritto dal: Mar 2003
Città: Roma
Messaggi: 1529
Quote:
Originariamente inviato da cionci
Voi avete fatto così quello che chiamate "passaggio per riferimento" ?
durante il corso nn sò come abbiano fatto,perchè per motivi di lavoro non l'ho potuto seguire...ora controllo meglio sui miei due libri...però non è che sia spiegato un gran ch+ l'uso delle strutture con le funzioni su questi libri...

ps: perchè c'è un altro metodo per passarle "per riferimento"?
__________________

Ho concluso trattative positive con: Miky71- Maxus- Echirulli (x2)- Giullare- Flyawayrm- Astro76- Marlom- Manuel78- Sclergio- The Saint- Ippo 2001- Fabietto_18.
LA DROGA NON E' MAI LEGGERA: E' DROGA.
DavidTwister è offline   Rispondi citando il messaggio o parte di esso
Old 14-01-2004, 12:19   #6
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originariamente inviato da DavidTwister
ps: perchè c'è un altro metodo per passarle "per riferimento"?
Se il libro trattasse l'utlimo standard del C (1999) mi sembra di sì...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 14-01-2004, 12:27   #7
DavidTwister
Senior Member
 
L'Avatar di DavidTwister
 
Iscritto dal: Mar 2003
Città: Roma
Messaggi: 1529
Quote:
Originariamente inviato da cionci
Se il libro trattasse l'utlimo standard del C (1999) mi sembra di sì...
su entrambe i libri c'è scritto che è stato usato lo standard ANSI/C : 1990....

cmq qual'è il nuovo metodo introdotto???
__________________

Ho concluso trattative positive con: Miky71- Maxus- Echirulli (x2)- Giullare- Flyawayrm- Astro76- Marlom- Manuel78- Sclergio- The Saint- Ippo 2001- Fabietto_18.
LA DROGA NON E' MAI LEGGERA: E' DROGA.
DavidTwister è offline   Rispondi citando il messaggio o parte di esso
Old 14-01-2004, 14:27   #8
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Vabbè...non ti interessa... Ti servirà quando e se farai il C++
Comunque si chiama passaggio per riferimento...
Codice:
void f(int &i)
{
   i = 0;
}

int a = 10;
f(a);
//a questo punto i è uguale a 0...
Comqunue non sono sicuro che sia stato inserito nello standard del C99... Sinceramente non me lo ricordo...se qualcuno ne sa di più che lo dica
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 14-01-2004, 20:47   #9
DavidTwister
Senior Member
 
L'Avatar di DavidTwister
 
Iscritto dal: Mar 2003
Città: Roma
Messaggi: 1529
Quote:
Originariamente inviato da cionci
Vabbè...non ti interessa... Ti servirà quando e se farai il C++
Comunque si chiama passaggio per riferimento...
Codice:
void f(int &i)
{
   i = 0;
}

int a = 10;
f(a);
//a questo punto i è uguale a 0...
Comqunue non sono sicuro che sia stato inserito nello standard del C99... Sinceramente non me lo ricordo...se qualcuno ne sa di più che lo dica
veramente strano come uso....cmq nello standard ANSI C che stiamo studiano questo modo non c'è proprio...
__________________

Ho concluso trattative positive con: Miky71- Maxus- Echirulli (x2)- Giullare- Flyawayrm- Astro76- Marlom- Manuel78- Sclergio- The Saint- Ippo 2001- Fabietto_18.
LA DROGA NON E' MAI LEGGERA: E' DROGA.
DavidTwister è offline   Rispondi citando il messaggio o parte di esso
Old 14-01-2004, 20:49   #10
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
In pratica i è un alias di a... A fine del codice assembly generato è la stessa cosa del passaggio per indirizzo
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 15-01-2004, 18:27   #11
VegetaSSJ5
Senior Member
 
L'Avatar di VegetaSSJ5
 
Iscritto dal: Sep 2002
Città: Celano (AQ) Segno_Zodiacale: Leone Ascendente: Cammello Segni_Particolari: Quello
Messaggi: 9571
Quote:
Originariamente inviato da cionci
Vabbè...non ti interessa... Ti servirà quando e se farai il C++
Comunque si chiama passaggio per riferimento...
Codice:
void f(int &i)
{
   i = 0;
}

int a = 10;
f(a);
//a questo punto i è uguale a 0...
Comqunue non sono sicuro che sia stato inserito nello standard del C99... Sinceramente non me lo ricordo...se qualcuno ne sa di più che lo dica
cionci scusa ma nel parametro della funzione f perchè dichiari int &i?? non dovresti dischiarare int *i per dire che si tratta di un puntatore??
Codice:
void f(int *i)
{
   *i = 0;
}
??
VegetaSSJ5 è offline   Rispondi citando il messaggio o parte di esso
Old 16-01-2004, 01:58   #12
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
E' il passaggio per riferimento del C++
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 16-01-2004, 12:08   #13
VegetaSSJ5
Senior Member
 
L'Avatar di VegetaSSJ5
 
Iscritto dal: Sep 2002
Città: Celano (AQ) Segno_Zodiacale: Leone Ascendente: Cammello Segni_Particolari: Quello
Messaggi: 9571
ops scusa non lo sapevo! non conosco il c++! visto che nel titolo del thread si parlava di c pensavo che tu avessi voluto scrivere il codice in c...
VegetaSSJ5 è offline   Rispondi citando il messaggio o parte di esso
Old 16-01-2004, 12:10   #14
DavidTwister
Senior Member
 
L'Avatar di DavidTwister
 
Iscritto dal: Mar 2003
Città: Roma
Messaggi: 1529
Quote:
Originariamente inviato da VegetaSSJ5
ops scusa non lo sapevo! non conosco il c++! visto che nel titolo del thread si parlava di c pensavo che tu avessi voluto scrivere il codice in c...
da quanto ho capito, quel passaggio di riferimento è in C(l'ultimo standard ANSI), ma dovrebbe essere originario del C++...cionci, è cosi?
__________________

Ho concluso trattative positive con: Miky71- Maxus- Echirulli (x2)- Giullare- Flyawayrm- Astro76- Marlom- Manuel78- Sclergio- The Saint- Ippo 2001- Fabietto_18.
LA DROGA NON E' MAI LEGGERA: E' DROGA.
DavidTwister è offline   Rispondi citando il messaggio o parte di esso
Old 16-01-2004, 12:16   #15
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
A me risulta che in c l'unico passaggio per riferimento possibile è utilizzare i puntatori...
(in effetti il c++ implementa internamente il passaggio per riferimento tramite puntatori)
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 16-01-2004, 12:18   #16
DavidTwister
Senior Member
 
L'Avatar di DavidTwister
 
Iscritto dal: Mar 2003
Città: Roma
Messaggi: 1529
Quote:
Originariamente inviato da ilsensine
A me risulta che in c l'unico passaggio per riferimento possibile è utilizzare i puntatori...
(in effetti il c++ implementa internamente il passaggio per riferimento tramite puntatori)
ah...no perchè sembra con lo standard ANSI C del 99 (non è sicuro dell'anno), si possa effettuare anche nel modo descritto....chi sappia qualcosa di + si faccia vivo!
__________________

Ho concluso trattative positive con: Miky71- Maxus- Echirulli (x2)- Giullare- Flyawayrm- Astro76- Marlom- Manuel78- Sclergio- The Saint- Ippo 2001- Fabietto_18.
LA DROGA NON E' MAI LEGGERA: E' DROGA.
DavidTwister è offline   Rispondi citando il messaggio o parte di esso
Old 16-01-2004, 14:24   #17
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Non sono sicuro che ci sia...mi sembrava che fosse stato introdotto nel C99... Purtroppo non ho ancora visto il C99

Sicuramente ilsensine ne sa di più...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 16-01-2004, 14:25   #18
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Il gcc supporta molte cose del C99, ma il reference alla c++ no...
Non so se lo standard lo prevede, io personalmente non he ho mai sentito parlare.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 16-01-2004, 14:27   #19
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Probabilmente ho fatto confusione io
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 16-01-2004, 20:57   #20
xybercom
Senior Member
 
L'Avatar di xybercom
 
Iscritto dal: Dec 2000
Città: dintorni di Seregno (MI)
Messaggi: 312
Il passaggio per reference non è nel C99 mentre è standard nel C++ da almeno il 1994 (se non da quando hanno inventato il linguaggio).
__________________
powered by GNU/Linux [ Debian Sid ]
xybercom è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


GIGABYTE GAMING A16, Raptor Lake e RTX 5060 Laptop insieme per giocare al giusto prezzo GIGABYTE GAMING A16, Raptor Lake e RTX 5060 Lapt...
iPhone 17 Pro: più di uno smartphone. È uno studio di produzione in formato tascabile iPhone 17 Pro: più di uno smartphone. &Eg...
Intel Panther Lake: i processori per i notebook del 2026 Intel Panther Lake: i processori per i notebook ...
Intel Xeon 6+: è tempo di Clearwater Forest Intel Xeon 6+: è tempo di Clearwater Fore...
4K a 160Hz o Full HD a 320Hz? Titan Army P2712V, a un prezzo molto basso 4K a 160Hz o Full HD a 320Hz? Titan Army P2712V,...
Start Cup Puglia 2025: il 16 ottobre la ...
Incentivi auto elettriche, falsa partenz...
Silence crea anche in Francia una rete d...
La realtà mista al servizio degli...
Nothing ha un altro smartphone in progra...
Decisione storica ad Amburgo: i cittadin...
Questo è il nuovo motore elettric...
HUAWEI WATCH GT 6: lo smartwatch 'infini...
Fotografia con AI: ecco Caira, la macchi...
PlayStation 6 vs Xbox Magnus: il rumor s...
DJI Osmo Action 4 a soli 208€ su Amazon:...
Irion, la data governance diventa strate...
EHang VT35: debutta in Cina il nuovo aer...
Cooler Master MasterLiquid Atmos II 360:...
Trapela in rete la roadmap dei nuovi gio...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 22:43.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v