Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria
Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria
vivo X300 Pro rappresenta un'evoluzione misurata della serie fotografica del produttore cinese, con un sistema di fotocamere migliorato, chipset Dimensity 9500 di ultima generazione e l'arrivo dell'interfaccia OriginOS 6 anche sui modelli internazionali. La scelta di limitare la batteria a 5.440mAh nel mercato europeo, rispetto ai 6.510mAh disponibili altrove, fa storcere un po' il naso
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2 è la nuova handheld PC gaming con processore AMD Ryzen Z2 Extreme (8 core Zen 5/5c, GPU RDNA 3.5 16 CU) e schermo OLED 8,8" 1920x1200 144Hz. È dotata anche di controller rimovibili TrueStrike con joystick Hall effect e una batteria da 74Wh. Rispetto al dispositivo che l'ha preceduta, migliora ergonomia e prestazioni a basse risoluzioni, ma pesa 920g e costa 1.299€ nella configurazione con 32GB RAM/1TB SSD e Z2 Extreme
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
A re:Invent 2025, AWS mostra un’evoluzione profonda della propria strategia: l’IA diventa una piattaforma di servizi sempre più pronta all’uso, con agenti e modelli preconfigurati che accelerano lo sviluppo, mentre il cloud resta la base imprescindibile per governare dati, complessità e lock-in in uno scenario sempre più orientato all’hybrid cloud
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 21-12-2013, 15:17   #1
BigMeister
Junior Member
 
Iscritto dal: Dec 2013
Messaggi: 20
Typedef Struct e Puntatori [C#]

Salve a tutti ragazzi, avrei bisogno di un chiarimento sull'utilizzo dei puntatori in C# sulle Typedef Struct.

Questa è la Typedef:

typedef struct{

char prop,
ris,
opprop[10],
tabella[16];

} struct_t;

void f_lettura( struct_t *p , struct_t lettura_1, struct_t lettura_2, struct_t lettura_3 , int );

Come posso puntarla all'interno del Main?Ci sto provando in tutti i modi ma non riesco, l'ultimo tentativo è stato questo:

int main (){
.............
.............
struct_t lettura;
struct_t *p;
p = &lettura;
.............
.............
f_lettura( *p, lettura_1, lettura_2, lettura_3 , np);
.............
.............
}

void f_lettura( struct_t *p , struct_t lettura_1, struct_t lettura_2, struct_t lettura_3 , int np ){
.....................................
.....................................
.....................................
}

Ma non funziona, l'errore relativo è:

error: incompatible type for argument 1 of ‘f_lettura’
note: expected ‘struct struct_t *’ but argument is of type ‘struct_t’

Attendo vostri chiarimenti perchè non so più dove battere la testa, grazie a tutti.
BigMeister è offline   Rispondi citando il messaggio o parte di esso
Old 21-12-2013, 15:32   #2
lorenzo001
Senior Member
 
Iscritto dal: Jul 2008
Città: Roma
Messaggi: 542
f_lettura( p,


P.S. Parli di C++ non di C#
lorenzo001 è offline   Rispondi citando il messaggio o parte di esso
Old 21-12-2013, 15:41   #3
BigMeister
Junior Member
 
Iscritto dal: Dec 2013
Messaggi: 20
Grazie mille della risposta, ora riconosce propriamente l'indirizzo solo che, ovviamente, ora all'interno della funzione f_lettura mi dà l'errore:

error: invalid type argument of ‘->’ (have ‘struct_t’)

Che è chiaramente riferito al modo in cui cerco di accedere ai campi della Typedef. Qual'è la giusta scrittura?Attualmente quella che provoca l'errore è ad esempio:

p->prop;

Come va cambiata?

EDIT:

Modificando in:

p.prop

Il risultato è quello sperato. Il problema è che terminata la funzione i valori inseriti con la funzione all'interno dei campi della Typedef è come se non venissero memorizzati ma nuovamente inzializzati da zero. Allora mi chiedo: Per quello che voglio fare io (sperando che venga capito anche da voi) non posso usare una Typedef?Insomma io vorrei questo:

- Dare in input a una funzione una Struttura con dei campi;
- Lavorare sui campi con la funzione.
- Mettere a disposizione al main la "nuova" Struttura elaborata con la Funzione per altre elaborazioni.

Ultima modifica di BigMeister : 21-12-2013 alle 16:05.
BigMeister è offline   Rispondi citando il messaggio o parte di esso
Old 21-12-2013, 16:14   #4
vendettaaaaa
Senior Member
 
L'Avatar di vendettaaaaa
 
Iscritto dal: Jan 2012
Messaggi: 1267
Quote:
Originariamente inviato da BigMeister Guarda i messaggi
Grazie mille della risposta, ora riconosce propriamente l'indirizzo solo che, ovviamente, ora all'interno della funzione f_lettura mi dà l'errore:

error: invalid type argument of ‘->’ (have ‘struct_t’)

Che è chiaramente riferito al modo in cui cerco di accedere ai campi della Typedef. Qual'è la giusta scrittura?Attualmente quella che provoca l'errore è ad esempio:

p->prop;

Come va cambiata?

EDIT:

Modificando in:

p.prop

Il risultato è quello sperato. Il problema è che terminata la funzione i valori inseriti con la funzione all'interno dei campi della Typedef è come se non venissero memorizzati ma nuovamente inzializzati da zero. Allora mi chiedo: Per quello che voglio fare io (sperando che venga capito anche da voi) non posso usare una Typedef?Insomma io vorrei questo:

- Dare in input a una funzione una Struttura con dei campi;
- Lavorare sui campi con la funzione.
- Mettere a disposizione al main la "nuova" Struttura elaborata con la Funzione per altre elaborazioni.
void f_lettura( struct_t& p , struct_t lettura_1, struct_t lettura_2, struct_t lettura_3 , int np ){
.....................................
.....................................
.....................................
}
Passa per riferimento (aggiungento & al tipo del dato) gli argomenti che vuoi siano modificati, altrimenti vengono passati per copia (l'argomento è copiato all'interno della funzione, e all'interno della funzione viene modificata la copia). Una reference è praticamente un puntatore automaticamente dereferenziato.
vendettaaaaa è offline   Rispondi citando il messaggio o parte di esso
Old 21-12-2013, 16:23   #5
BigMeister
Junior Member
 
Iscritto dal: Dec 2013
Messaggi: 20
Cioè una cosa di questo tipo?

typedef struct{

char prop,
ris,
opprop[10],
tabella[16];

} struct_t;

void f_lettura( struct_t& p , struct_t lettura_1, struct_t lettura_2, struct_t lettura_3 , int );

int main (){
.............
.............
struct_t& p;
.............
.............
f_lettura( p, lettura_1, lettura_2, lettura_3 , np);
.............
.............
}

void f_lettura( struct_t& p , struct_t lettura_1, struct_t lettura_2, struct_t lettura_3 , int np ){
.....................................
.....................................
.....................................
}

EDIT:

Questo tipo di scrittura provoca i seguenti errori:

error: expected ‘;’, ‘,’ or ‘)’ before ‘&’ token
In function ‘main’:
error: expected identifier or ‘(’ before ‘&’ token
warning: implicit declaration of function ‘f_lettura’ [-Wimplicit-function-declaration]
At top level:
error: expected ‘;’, ‘,’ or ‘)’ before ‘&’ token

Ultima modifica di BigMeister : 21-12-2013 alle 16:33.
BigMeister è offline   Rispondi citando il messaggio o parte di esso
Old 21-12-2013, 16:49   #6
vendettaaaaa
Senior Member
 
L'Avatar di vendettaaaaa
 
Iscritto dal: Jan 2012
Messaggi: 1267
Bastava far la modifica, che ti ho messo in grassetto, alla funzione (quindi anche nella dichiarazione della funzione sopra al main, come giustamente hai fatto). Nel main la variabile devi dichiararla senza ampersand.
vendettaaaaa è offline   Rispondi citando il messaggio o parte di esso
Old 21-12-2013, 17:08   #7
BigMeister
Junior Member
 
Iscritto dal: Dec 2013
Messaggi: 20
Quote:
Originariamente inviato da vendettaaaaa Guarda i messaggi
Bastava far la modifica, che ti ho messo in grassetto, alla funzione (quindi anche nella dichiarazione della funzione sopra al main, come giustamente hai fatto). Nel main la variabile devi dichiararla senza ampersand.

Questo è il nuovo codice:

typedef struct{

char prop,
ris,
opprop[10],
tabella[16];

}struct_t;

void f_lettura( struct_t& p, struct_t lettura_1, struct_t lettura_2, struct_t lettura_3 , int );

int main(){

struct_t lettura;

struct_t *p;
p = &lettura;

f_lettura( p, lettura_1, lettura_2, lettura_3 , np);

}

void f_lettura( struct_t& p , struct_t lettura_1, struct_t lettura_2, struct_t lettura_3 , int np ){

}

Gli errori sempre quelli di prima. Non voglio scocciarti/vi, è che proprio queste proprietà del C non riesco mai a capirle pienamente. Infatti qui non riesco proprio a trovare l'errore perchè non riesco a capire dove effettivamente è!

Grazie del aiuto!

EDIT: RISOLTO

Ho risolto nel seguente modo (C)

void f_lettura( struct_t * p, struct_t lettura_1, struct_t lettura_2, struct_t lettura_3 , int );

int main () {

struct_t *p;
p = &lettura;

}

void f_lettura( struct_t * p , struct_t lettura_1, struct_t lettura_2, struct_t lettura_3 , int np ){


}

Potete chiudere, grazie a tutti!

Ultima modifica di BigMeister : 23-12-2013 alle 20:24. Motivo: RISOLTO
BigMeister è offline   Rispondi citando il messaggio o parte di esso
Old 21-12-2013, 17:36   #8
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Per prima cosa devi capire in quale linguaggio stai programmando.
Nel titolo citi C# che evidentemente non è.
Stai scrivendo in C o C++? I riferimenti in C non esistono quindi non puoi usare la sintassi suggerita.
La prima variabile di f_lettura è un puntatore quindi devi passare alla funzione un puntarore. Sai come si usano i puntatori in C?
Se hai una variabile allocata sullo stack come lettura nel tuo caso, come ne ottieni l'indirizzo ovvero il puntatore?
Queste sono le regole base della sintassi del C, andrebbero un minimo studiate prima di cimentarsi con la scrittura del codice.
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 22-12-2013, 12:09   #9
lorenzo001
Senior Member
 
Iscritto dal: Jul 2008
Città: Roma
Messaggi: 542
Quote:
Originariamente inviato da BigMeister Guarda i messaggi
Ho risolto nel seguente modo (C#)
C# non c'entra nulla !!
lorenzo001 è offline   Rispondi citando il messaggio o parte di esso
Old 23-12-2013, 20:22   #10
BigMeister
Junior Member
 
Iscritto dal: Dec 2013
Messaggi: 20
Ragazzi perdonatemi se dico un pò di sfondoni, comunque è C il linguaggio.
Dato che siamo sempre in argomento di Typedef vorrei chiedervi questa cosa dato che non riesco a trovarla e in rete è poco chiara:

Vorrei inserire la Typedef Struct in una libreria assieme alle funzioni. Per la funzioni non ho trovato alcun problema, sul file.h ho inserito la dichiarazione e sul file.c il corpo della funzione. Con la Typedef Struct invece è rogna. Come si passa sul file.h e sul file.c?Perchè ho tentato scrivendola per intero su file.h, cioè:

Typedef struct{

} esempio;

Compilando file.c e file.h però mi dà il seguente errore:

esempio.c: error: unknown type name ‘esempio’

e l'errore è relativo alle funzioni che sfruttano esempio, cioè:

prova( esempio *p , esempio *q );

Mi potreste chiarire le idee? Grazie mille, siete stati sempre gentilissimi!
BigMeister è offline   Rispondi citando il messaggio o parte di esso
Old 23-12-2013, 22:12   #11
lorenzo001
Senior Member
 
Iscritto dal: Jul 2008
Città: Roma
Messaggi: 542
Se la typedef l'hai inserita nel .h e il .h l'hai incluso non dovresti avere problemi.

Occhio ... non

Typedef

ma

typedef
lorenzo001 è offline   Rispondi citando il messaggio o parte di esso
Old 24-12-2013, 14:03   #12
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Quote:
Originariamente inviato da BigMeister Guarda i messaggi
Ragazzi perdonatemi se dico un pò di sfondoni, comunque è C il linguaggio.
Dato che siamo sempre in argomento di Typedef vorrei chiedervi questa cosa dato che non riesco a trovarla e in rete è poco chiara:

Vorrei inserire la Typedef Struct in una libreria assieme alle funzioni. Per la funzioni non ho trovato alcun problema, sul file.h ho inserito la dichiarazione e sul file.c il corpo della funzione. Con la Typedef Struct invece è rogna. Come si passa sul file.h e sul file.c?Perchè ho tentato scrivendola per intero su file.h, cioè:

Typedef struct{

} esempio;

Compilando file.c e file.h però mi dà il seguente errore:

esempio.c: error: unknown type name ‘esempio’

e l'errore è relativo alle funzioni che sfruttano esempio, cioè:

prova( esempio *p , esempio *q );

Mi potreste chiarire le idee? Grazie mille, siete stati sempre gentilissimi!
Codice:
typedef struct esempio
{
...
} esempio;
tomminno è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria Recensione vivo X300 Pro: è ancora lui il...
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'...
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti AWS re:Invent 2025: inizia l'era dell'AI-as-a-Se...
Cos'è la bolla dell'IA e perché se ne parla Cos'è la bolla dell'IA e perché se...
BOOX Palma 2 Pro in prova: l'e-reader diventa a colori, e davvero tascabile BOOX Palma 2 Pro in prova: l'e-reader diventa a ...
iPhone Fold: scorte limitate al lancio m...
OpenAI porterà la pubblicità in ChatGPT ...
TSMC aumenterà ancora i prezzi: nel 2026...
Marvel pubblica anche il secondo teaser ...
Nuovo accordo tra xAI e il Pentagono: l'...
La famiglia Xiaomi 17 sta per registrare...
Nuove auto elettriche che vedremo sul me...
E-bike illegali, a Verona il più ...
Quali sono i giochi più venduti su Steam...
HONOR sta per lanciare un nuovo smartpho...
Jared Isaacman sarà alla guida de...
Il Tesla Cybertruck non arriverà ...
Xiaomi Watch 5 è ufficiale: architettura...
CD Projekt vende GOG: il co-fondatore Mi...
Il meglio di Amazon in 26 prodotti, aggi...
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: 18:57.


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