Torna indietro   Hardware Upgrade Forum > Software > Programmazione

AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequenze al top per il gaming
AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequenze al top per il gaming
AMD Ryzen 7 9850X3D è la nuova CPU gaming di riferimento grazie alla 3D V-Cache di seconda generazione e frequenze fino a 5,6 GHz. Nei test offre prestazioni superiori a 9800X3D e 7800X3D, confermando la leadership AMD nel gaming su PC.
Le soluzioni FSP per il 2026: potenza e IA al centro
Le soluzioni FSP per il 2026: potenza e IA al centro
In occasione del Tech Tour 2025 della European Hardware Association abbiamo incontrato a Taiwan FSP, azienda impegnata nella produzione di alimentatori, chassis e soluzioni di raffreddamento tanto per clienti OEM come a proprio marchio. Potenze sempre più elevate negli alimentatori per far fronte alle necessità delle elaborazioni di intelligenza artificiale.
AWS annuncia European Sovereign Cloud, il cloud sovrano per convincere l'Europa
AWS annuncia European Sovereign Cloud, il cloud sovrano per convincere l'Europa
AWS è il principale operatore di servizi cloud al mondo e da tempo parla delle misure che mette in atto per garantire una maggiore sovranità alle organizzazioni europee. L'azienda ha ora lanciato AWS European Sovereign Cloud, una soluzione specificamente progettata per essere separata e distinta dal cloud "normale" e offrire maggiori tutele e garanzie di sovranità
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 18-02-2007, 20:17   #1
Re_Kotc
Senior Member
 
L'Avatar di Re_Kotc
 
Iscritto dal: Aug 2003
Città: verona
Messaggi: 541
problemino funzione in C

ho un dubbio riguardo all'uso delle funzioni in C, se ne scrivo una che deve restituire un vettore di caratteri, non potendo passare l'intero vettore in un unico assegnamento come posso fare? ho provato a scrivere la funzione in modo che restituisse un puntatore a char però non funziona....!..c'è qualche base teorica che mi sfugge o che altro?...grazie mille :-)
__________________
CASE: Cooler Master Stacker 831 Silver MOBO: Asus Maximus Formula CPU: Intel Q6600@2,4ghz RAM: 2x 1GB Corsair XMS2 pc2-8500@1066mhz + 2x2GB Corsair XMS2 pc2-8500@1066mhzVGA: ATI Sapphire RADEON 5830 1GB GDDR5 HD: 2 x WD Caviar SE16 500GB Raid 0
Re_Kotc è offline   Rispondi citando il messaggio o parte di esso
Old 18-02-2007, 23:00   #2
kniv7s
Member
 
L'Avatar di kniv7s
 
Iscritto dal: Jun 2004
Città: Cesena
Messaggi: 56
Primo, ti spieghi malissimo.

Secondo, i vettori sono passati per riferimento, indi li puoi modificare.
__________________
Roberto Casadei
http://www.robyonrails.eu
"Tant'è amara che poco è più morte, ma per trattar del ben ch'i' vi trovai, dirò de l'altre cose ch'i' v'ho scorte."
kniv7s è offline   Rispondi citando il messaggio o parte di esso
Old 18-02-2007, 23:30   #3
Re_Kotc
Senior Member
 
L'Avatar di Re_Kotc
 
Iscritto dal: Aug 2003
Città: verona
Messaggi: 541
a me sembra piuttosto chiaro...cmq proverò a farla + facile..come faccio a scrivere una funzione che restituisca un vettore di caratteri?..qualcuno può fare un esempio? (la funzione in se non ha importanza ciò che conta è il vettore di caratteri che viene restituito)...spero si capisca adesso--
__________________
CASE: Cooler Master Stacker 831 Silver MOBO: Asus Maximus Formula CPU: Intel Q6600@2,4ghz RAM: 2x 1GB Corsair XMS2 pc2-8500@1066mhz + 2x2GB Corsair XMS2 pc2-8500@1066mhzVGA: ATI Sapphire RADEON 5830 1GB GDDR5 HD: 2 x WD Caviar SE16 500GB Raid 0
Re_Kotc è offline   Rispondi citando il messaggio o parte di esso
Old 19-02-2007, 04:01   #4
Dr.Speed
Senior Member
 
L'Avatar di Dr.Speed
 
Iscritto dal: Jun 2004
Città: Monselice (PD)
Messaggi: 4641
Quote:
Originariamente inviato da Re_Kotc Guarda i messaggi
a me sembra piuttosto chiaro...cmq proverò a farla + facile..come faccio a scrivere una funzione che restituisca un vettore di caratteri?..qualcuno può fare un esempio? (la funzione in se non ha importanza ciò che conta è il vettore di caratteri che viene restituito)...spero si capisca adesso--
metti la funzione dentro un ciclo for con una variabile che legge un elemento del vettore per volta
__________________
2500KCorsair H70Asrock EXTREME4 GEN38GB Corsair DDR3 1600MHz CL8Gainward GTX570 GLHSSD Samsung 830 64GBCorsair CX600Centaurion2G500206BW
\_\_\_\_\_DrSpeed_/_/_/_/_/
Dr.Speed è offline   Rispondi citando il messaggio o parte di esso
Old 19-02-2007, 10:16   #5
sheijtan
Senior Member
 
L'Avatar di sheijtan
 
Iscritto dal: May 2003
Messaggi: 380
Se devi solo manipolare una stringa:
Codice:
int
doSomethingWith (char * str) {
 /* fai qualcosa su str */
 return SUCCESS;
}
se la tua funzione deve creare e manipolare una stringa:
Codice:
char *
vreateStr(size_t n) {
  char* str;
 /* creo un array di char di dimensioni n */
 str = (char*) malloc (n);
 /* fai cualcosa su str */
 /* ricordati di mettere un \0 a fine stringa */
 return str;
}
__________________
Xbox360+BenQT2200HDA

Ultima modifica di sheijtan : 19-02-2007 alle 10:21.
sheijtan è offline   Rispondi citando il messaggio o parte di esso
Old 19-02-2007, 10:17   #6
Re_Kotc
Senior Member
 
L'Avatar di Re_Kotc
 
Iscritto dal: Aug 2003
Città: verona
Messaggi: 541
uhm...scusate forse sono io che non ho spiegato bene..faccio un esempio


char *funzione(){

char *parola[20];

return *parola;

}

io ho bisogno che la funzione restituisca un vettore che è stato elaborato nella funzione stessa (nell'esempio ovviamente la funzione non fa assolutamente nulla), però così come è scritto non funziona, pensavo di poter passare all'esterno il puntatore così da avere come return l'intero contenuto di "parola[20]".
__________________
CASE: Cooler Master Stacker 831 Silver MOBO: Asus Maximus Formula CPU: Intel Q6600@2,4ghz RAM: 2x 1GB Corsair XMS2 pc2-8500@1066mhz + 2x2GB Corsair XMS2 pc2-8500@1066mhzVGA: ATI Sapphire RADEON 5830 1GB GDDR5 HD: 2 x WD Caviar SE16 500GB Raid 0
Re_Kotc è offline   Rispondi citando il messaggio o parte di esso
Old 19-02-2007, 10:27   #7
sheijtan
Senior Member
 
L'Avatar di sheijtan
 
Iscritto dal: May 2003
Messaggi: 380
Quote:
Originariamente inviato da Re_Kotc Guarda i messaggi
uhm...scusate forse sono io che non ho spiegato bene..faccio un esempio


char *funzione(){

char *parola[20];

return *parola;

}

io ho bisogno che la funzione restituisca un vettore che è stato elaborato nella funzione stessa (nell'esempio ovviamente la funzione non fa assolutamente nulla), però così come è scritto non funziona, pensavo di poter passare all'esterno il puntatore così da avere come return l'intero contenuto di "parola[20]".
L'es che hai postato non funzionerebbe perché l' array allocato nella funzione verrebbe deallocato nel ritorno al chiamante ed anche perché hai dichiarato un vettore di *puntatori a char* di 20 elementi.
ti conviene:
1- allocare la stringa fuori della funzione che dovrà manipolarla
2- passare la stringa e alla funzione come puntatore
3- se non passi esplicitamente la dimensione della stringa alla funzione
usa il carattere \0 per determinare la fine della stringa.
quindi primo es. che ho postato.
__________________
Xbox360+BenQT2200HDA

Ultima modifica di sheijtan : 19-02-2007 alle 10:29.
sheijtan è offline   Rispondi citando il messaggio o parte di esso
Old 19-02-2007, 10:36   #8
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da Re_Kotc Guarda i messaggi
char *funzione(){

char *parola[20];

return *parola;

}
Innanzitutto, parola così come lo hai dichiarato, è un array di puntatori a char. Non un vettore di char. Comunque anche se l'avessi dichiarato:

char parola[20];

Non puoi restituire parola perché al termine della funzione, l'array "sparisce". Potresti dichiarare parola 'static', in quel caso ha durata fissa e potresti quindi restituirlo. Ovviamente non è il massimo .... ma può andare bene in taluni casi.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 19-02-2007, 10:45   #9
Re_Kotc
Senior Member
 
L'Avatar di Re_Kotc
 
Iscritto dal: Aug 2003
Città: verona
Messaggi: 541
uhm...vi ringrazio delle risposte!:-) ma allora scusate se l'array viene deallocato al termine dell'esecuzione della funzione....il return a cosa serve??...cioè se io voglio che la variabile venga restituito all'esterno (anche non un vettore) non posso scrivere return variabile??...(supponendo sempre che variabile sia dichiarata dentro la funzione)
__________________
CASE: Cooler Master Stacker 831 Silver MOBO: Asus Maximus Formula CPU: Intel Q6600@2,4ghz RAM: 2x 1GB Corsair XMS2 pc2-8500@1066mhz + 2x2GB Corsair XMS2 pc2-8500@1066mhzVGA: ATI Sapphire RADEON 5830 1GB GDDR5 HD: 2 x WD Caviar SE16 500GB Raid 0
Re_Kotc è offline   Rispondi citando il messaggio o parte di esso
Old 19-02-2007, 10:58   #10
sheijtan
Senior Member
 
L'Avatar di sheijtan
 
Iscritto dal: May 2003
Messaggi: 380
Quote:
Originariamente inviato da Re_Kotc Guarda i messaggi
uhm...vi ringrazio delle risposte!:-) ma allora scusate se l'array viene deallocato al termine dell'esecuzione della funzione....il return a cosa serve??...cioè se io voglio che la variabile venga restituito all'esterno (anche non un vettore) non posso scrivere return variabile??...(supponendo sempre che variabile sia dichiarata dentro la funzione)
a questo servono le chiamate per riferimento. Il return può ritornare un *valore* dei tipi fondamentali (int, double, char ecc ecc). cmq, quando hai funzioni che compiono operazioni complesse in cui qualcosa può andar storto sarebbe bene:
1-lavorare sui puntatori (chiamate per riferimento).
2-usare il qualificatore const per i puntatori ai dati costanti (non modificati dalla funzione)
3- usare return per ritornare un codice di errore (int)
es.:
int foo(const myDataType* data, myOutputType* out);
__________________
Xbox360+BenQT2200HDA
sheijtan è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequenze al top per il gaming AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequen...
Le soluzioni FSP per il 2026: potenza e IA al centro Le soluzioni FSP per il 2026: potenza e IA al ce...
AWS annuncia European Sovereign Cloud, il cloud sovrano per convincere l'Europa AWS annuncia European Sovereign Cloud, il cloud ...
Redmi Note 15 Pro+ 5G: autonomia monstre e display luminoso, ma il prezzo è alto Redmi Note 15 Pro+ 5G: autonomia monstre e displ...
HONOR Magic 8 Pro: ecco il primo TOP del 2026! La recensione HONOR Magic 8 Pro: ecco il primo TOP del 2026! L...
Amazon trasforma qualsiasi TV in smart: ...
Meta ha quasi smesso di parlare di metav...
STMicroelectronics sorprende nel Q4: rit...
Recensione realme P4 Power: con una batt...
Chrome può navigare da solo adess...
Amazon rende smart il citofono di casa: ...
Samsung chiude il 2025 con risultati rec...
Tesla svela i dati finanziari di fine 20...
Nuovo kit Mesh FRITZ! con Wi‑Fi 7:...
Windows 11 ha raggiunto quota un miliard...
L'offerta di WindTre è pazzesca: 5G e m...
Cloudflare annuncia un ricorso alla sanz...
Questo robot usa l'anca per chiudere i c...
Il piano Google AI Plus arriva in Italia...
Sembra un foglio di carta, ma è u...
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: 10:37.


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