Esercizio sulle struct

Davide D. Fiore

Nuovo Utente
22
2
CPU
amd athlon(tm) 64 x2 dual core processor 5000+
Scheda Madre
alivenf6g-glan
HDD
samsung hd502hi scsi disk device 465 GB
RAM
1,75 GB
GPU
nvidia geforce 6150se nforce 430
Audio
Realtek High Definition Audio
Monitor
philips 190s7fs/00
OS
Windows Xp Professional(2002)
Salve ragazzi! Poichè domani ho l'esame di programmazione(per al terza volta! :'( ) qualcuno di buona volontà mi potrebbe far capire quest'esercizio?
Si supponga che le variabili x, y, z, p e q siano dichiarate come segue.
struct point { int x, y, z;};
struct point q = {10,20};
struct point *p = &q;
Indicare quali delle seguenti istruzioni sono corrette e quali errate:
(a) q.x *= 2;
(b) (&q)->y += 1;
(c) q->y -= 1;
(d) (*q)->x += 10;
(e) (&q).y *= 3;
(f) (&q)->z = p->x + 100;

se possibile, mi dite il motivo sia di quelle corrette che di quelle errate.
 

1nd33d

Utente Attivo
653
279
CPU
Intel i5 3570K @ 4,5Ghz
Dissipatore
Scythe Mugen 2
Scheda Madre
Gigabyte Z77X-UD3H
HDD
Samsung 840 PRO 256GB + Sandisk Ultra 250GB + Sandisk Plus 960GB
RAM
2x8GB Crucial Ballistix Tactical @2000Mhz CL9
GPU
XFX RX480 GTR Black Edition
Audio
Auzentech X-Fi Forte
Monitor
AOC i2369VW
PSU
Seasonic P660
Case
eh?
Periferiche
Razer Naga HEX v2
OS
Windows 10 64bit - Linux Mint 18
Se compili il codice vedi immediatamente quali sono giuste e quali no.
Comunque devi partire dal presupposto che l'operatore "." lo applichi a variabili di tipo struttura, l'operatore "->" lo applichi a puntatori di tipo struttura (indirizzi di variabili di tipo struttura).
Detto questo:
a) è giusta perchè q è una struttura e l'operatore "." preleva il valore di x e lo raddoppia.
b) è giusta perchè (&q) equivale a p e l'operatore "->" funziona correttamente
c) è sbagliata perchè q è una struttura, quindi non usi l'operatore "->" ma devi usare "."
d) è sbagliata perchè con (*q) il compilatore prova a interpretare q come puntatore, ma q è una struttura, infatti l'errore indica l'uso errato dell'operatore "*"
e) è sbagliata perchè "." funziona su variabili di tipo struttura, ma (&q) si comporta come un puntatore a struttura (è il contrario del punto b)
f) è giusta perchè i due "->" si riferiscono entrambi all'indirizzo di q (la prima volta con l'operatore "&", la seconda con il puntatore)
 
  • Mi piace
Reazioni: Davide D. Fiore

Davide D. Fiore

Nuovo Utente
22
2
CPU
amd athlon(tm) 64 x2 dual core processor 5000+
Scheda Madre
alivenf6g-glan
HDD
samsung hd502hi scsi disk device 465 GB
RAM
1,75 GB
GPU
nvidia geforce 6150se nforce 430
Audio
Realtek High Definition Audio
Monitor
philips 190s7fs/00
OS
Windows Xp Professional(2002)
Non potevi essere più chiaro di così!!! :D Grazie mille! :inchino:
 

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!