Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Insta360 Link 2 Pro e 2C Pro: le webcam 4K che ti seguono, anche con gimbal integrata
Insta360 Link 2 Pro e 2C Pro: le webcam 4K che ti seguono, anche con gimbal integrata
Le webcam Insta360 Link 2 Pro e Link 2C Pro sono una proposta di fascia alta per chi cerca qualità 4K e tracciamento automatico del soggetto senza ricorrere a configurazioni complesse. Entrambi i modelli condividono sensore, ottiche e funzionalità audio avanzate, differenziandosi per il sistema di tracciamento: gimbal a due assi sul modello Link 2 Pro, soluzione digitale sul 2C Pro
Motorola edge 70: lo smartphone ultrasottile che non rinuncia a batteria e concretezza
Motorola edge 70: lo smartphone ultrasottile che non rinuncia a batteria e concretezza
Motorola edge 70 porta il concetto di smartphone ultrasottile su un terreno più concreto e accessibile: abbina uno spessore sotto i 6 mm a una batteria di capacità relativamente elevata, un display pOLED da 6,7 pollici e un comparto fotografico triplo da 50 MP. Non punta ai record di potenza, ma si configura come alternativa più pragmatica rispetto ai modelli sottili più costosi di Samsung e Apple
Display, mini PC, periferiche e networking: le novità ASUS al CES 2026
Display, mini PC, periferiche e networking: le novità ASUS al CES 2026
Sono molte le novità che ASUS ha scelto di presentare al CES 2026 di Las Vegas, partendo da una gamma di soluzioni NUC con varie opzioni di processore passando sino agli schermi gaming con tecnologia OLED. Il tutto senza dimenticare le periferiche di input della gamma ROG e le soluzioni legate alla connettività domestica
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


Insta360 Link 2 Pro e 2C Pro: le webcam 4K che ti seguono, anche con gimbal integrata Insta360 Link 2 Pro e 2C Pro: le webcam 4K che t...
Motorola edge 70: lo smartphone ultrasottile che non rinuncia a batteria e concretezza Motorola edge 70: lo smartphone ultrasottile che...
Display, mini PC, periferiche e networking: le novità ASUS al CES 2026 Display, mini PC, periferiche e networking: le n...
Le novità ASUS per il 2026 nel settore dei PC desktop Le novità ASUS per il 2026 nel settore de...
Le novità MSI del 2026 per i videogiocatori Le novità MSI del 2026 per i videogiocato...
Fujifilm annuncia la nuova stampante ist...
Arriva Red Hat Enterprise Linux for NVID...
Il marchio Volkswagen Jetta torna, ma or...
L'odio verso Electronic Arts è sp...
HONOR Magic 8 Pro: promosso da DXOMARK m...
instax mini Evo Cinema: la nuova soluzio...
YouTube mette un freno agli Shorts: i ge...
Dreame L40 Ultra AE di nuovo a 499€ su A...
I consigli per l'upgrade del proprio PC:...
Il cloud per i criminali? Si chiamava Re...
SpaceX si aggiudica un contratto da 739 ...
Nuove analisi di Geotab: la ricarica fas...
Il limite degli 1,5 gradi è sempre più l...
NVIDIA rilascia DLSS 4.5 Super Resolutio...
Dipartimento dell'Energia degli Stati Un...
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: 17:21.


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