Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Jabra Evolve3 85: le cuffie sia per l'intrattenimento che per il lavoro
Jabra Evolve3 85: le cuffie sia per l'intrattenimento che per il lavoro
Le Jabra Evolve3 85 non sono semplicemente cuffie Bluetooth con cancellazione del rumore. Sono un dispositivo professionale pensato per chi trascorre gran parte della giornata in riunione, al telefono o davanti a un assistente basato sull'intelligenza artificiale
MSI PRO MAX EDGE AI+, Ryzen AI Max+ 395 e 128 GB per far girare in locale anche i modelli più grandi
MSI PRO MAX EDGE AI+, Ryzen AI Max+ 395 e 128 GB per far girare in locale anche i modelli più grandi
Abbiamo provato MSI PRO MAX EDGE AI+, un mini-PC professionale progettato per eseguire modelli di intelligenza artificiale in locale, senza dipendere dal cloud. Il sistema abbina il processore AMD Ryzen AI Max+ 395, 128 GB di memoria unificata e un telaio in alluminio da appena 4 litri, con l'obiettivo di offrire capacità di elaborazione elevate in un formato compatto.
Recensione vivo X500 Pro Max: la fotografia mobile ha un nuovo protagonista
Recensione vivo X500 Pro Max: la fotografia mobile ha un nuovo protagonista
Il nuovo top di gamma vivo punta su un comparto fotografico particolarmente articolato, con un teleobiettivo da 200 megapixel e teleconvertitori esterni capaci di arrivare a 400 mm equivalenti. Lo abbiamo provato a Tenerife, mettendo alla prova fotocamere, prestazioni, autonomia e accessori. Ecco come si è comportato.
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


Jabra Evolve3 85: le cuffie sia per l'intrattenimento che per il lavoro Jabra Evolve3 85: le cuffie sia per l'intratteni...
MSI PRO MAX EDGE AI+, Ryzen AI Max+ 395 e 128 GB per far girare in locale anche i modelli più grandi MSI PRO MAX EDGE AI+, Ryzen AI Max+ 395 e 128 GB...
Recensione vivo X500 Pro Max: la fotografia mobile ha un nuovo protagonista Recensione vivo X500 Pro Max: la fotografia mobi...
WoW Forever: la beta è stato uno dei momenti più alti della storia dei videogiochi, e non si ripeterà WoW Forever: la beta è stato uno dei mome...
Oracle AI World 2026: in Europa prima la sovranità, poi la sicurezza e solo dopo l'IA Oracle AI World 2026: in Europa prima la sovrani...
iPhone: il redesign dei 20 anni sarà inn...
OpenAI sfida GitHub acquisendo Pierre Co...
Novità ai vertici di HP: Emma Wal...
Pudu Robotics apre la sede europea : un ...
Meta compra Conductor, la startup degli ...
ASUS ExpertBook A7: disponibile in Itali...
Il film di Naruto si farà davvero: Sony ...
Motorola porta il suono Bose su moto bud...
Motorola presenta moto watch 2 fit: tecn...
motorola signature 27 ufficiale! Il top ...
Dreame L60 Ultra CE a 799€ su Amazon: 35...
DJI Matrice 5T: nuovo drone enterprise c...
iOS 27.3 e gli altri nuovi OS cambiano l...
ECOVACS T90 MAX OMNI crolla a 389€ su Am...
Switch 2 rallenta dopo i rincari: 2,67 m...
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: 21:33.


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