Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Gigabyte MO32U24 OLED: il 4K a 240Hz su un pannello OLED ideale per il gaming
Gigabyte MO32U24 OLED: il 4K a 240Hz su un pannello OLED ideale per il gaming
Pannello QD-OLED da 32 pollici con risoluzione 4K, frequenza di aggiornamento a 240Hz e tempi di risposta rapidissimi: il Gigabyte MO32U24 evolve il progetto del suo predecessore MO32U e alza ulteriormente l'asticella delle prestazioni. È ancora una volta un monitor indirizzato ai giocatori più esigenti
Recensione realme 16 5G: lo smartphone con Selfie Mirror ha una batteria da 6550mAh
Recensione realme 16 5G: lo smartphone con Selfie Mirror ha una batteria da 6550mAh
realme 16 5G è un nuovo smartphone con sensore Sony IMX 852 da 50MP sul retro e uno specchio selfie fisico integrato nella camera bar, una prima nel segmento di mercato. Batteria da 6550mAh in un corpo da 8,1mm e 183g, certificazione IP69K e ricarica da 45W completano un pacchetto aggressivo per la fascia media, per uno dei prodotti più interessanti del produttore sul piano commerciale
Come rispettare tutte le nuove regole per i monopattini elettrici? La guida per non rischiare sanzioni
Come rispettare tutte le nuove regole per i monopattini elettrici? La guida per non rischiare sanzioni
Sono ormai definitive le nuove norme del Codice della Strada per i monopattini elettrici. Non solo targa e assicurazione, le regole sono tante e riguardano diversi aspetti, vi spieghiamo come evitare sanzioni che possono essere salate
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 MO32U24 OLED: il 4K a 240Hz su un pannello OLED ideale per il gaming Gigabyte MO32U24 OLED: il 4K a 240Hz su un panne...
Recensione realme 16 5G: lo smartphone con Selfie Mirror ha una batteria da 6550mAh Recensione realme 16 5G: lo smartphone con Selfi...
Come rispettare tutte le nuove regole per i monopattini elettrici? La guida per non rischiare sanzioni Come rispettare tutte le nuove regole per i mono...
DLSS 4.5: con Dynamic Frame Generation e MFG 6X NVIDIA alza la posta DLSS 4.5: con Dynamic Frame Generation e MFG 6X ...
Plaud NotePin S, il registratore IA si fa indossabile (ma è facile da perdere) Plaud NotePin S, il registratore IA si fa indoss...
Grazie a GLIMPSE-17775 il telescopio spa...
Samsung Galaxy A27 5G è ufficiale...
TCL aggiorna la sua gamma di monitor per...
Anche OPPO avrà uno smartphone co...
La Radeon RX 9070 XT appare su Steam e m...
L'America si ribella ai datacenter: bloc...
'Artificial General Engineer': l'IA di J...
Il drone NASA Dragonfly, che voler&agrav...
Stop immediato a Fable 5 e Mythos 5: il ...
"Prime Day Amazon il 23-26 giugno": sì e...
Oggi 2 super MacBook Pro M5 e M5 Pro, 24...
Tineco Floor One Station S9 Artist: il s...
Raggiunte nuove altitudine e velocit&agr...
Apple Watch Series 11 GPS a 339€ su Amaz...
Come un MacBook, ma con la RTX 5070: MSI...
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:27.


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