Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Redmi Pad 2 9.7: ampio display, economico e peso contenuto, ma qualche limite nelle prestazioni
Redmi Pad 2 9.7: ampio display, economico e peso contenuto, ma qualche limite nelle prestazioni
Redmi Pad 2 9.7 punta su un display ampio e fluido, una batteria capace di accompagnare l'uso quotidiano senza ansie da ricarica e un prezzo accessibile, a partire da 179,90 euro per la versione con 64 GB di storage. Lo Snapdragon 6s 4G Gen 2 e i 4 GB di RAM della configurazione più diffusa frenano però chi cerca reattività e multitasking spinto: ecco il bilancio dopo due settimane di prova diretta
Peugeot Polygon Concept: ecco il futuro delle utilitarie
Peugeot Polygon Concept: ecco il futuro delle utilitarie
Polygon è la concept car di Peugeot che mostra il futuro delle soluzioni del segmento B: tra design compatti e innovativi affiancati da dimensioni compatte uno scherzo dalla manovrabilità incredibile per le manovre a bassa velocità
Reno16 Pro: il compatto di OPPO punta su fotocamera da 200MP e il nuovo Bubble! La recensione
Reno16 Pro: il compatto di OPPO punta su fotocamera da 200MP e il nuovo Bubble! La recensione
OPPO ha portato in Italia, dal 1° luglio 2026, Reno16 Pro: display AMOLED da 6,32 pollici a 144Hz, tripla fotocamera con sensore principale da 200 megapixel, chip Dimensity 8550 Super e batteria da 6000mAh, al prezzo di lancio di 899 euro. Lo abbiamo provato per due settimane insieme al nuovo accessorio Bubble, per capire se la formula compatta della serie regge ancora di fronte a un listino da 1099 euro
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 18-02-2007, 19: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, 22: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, 22: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, 03: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, 09: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 09:21.
sheijtan è offline   Rispondi citando il messaggio o parte di esso
Old 19-02-2007, 09: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, 09: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 09:29.
sheijtan è offline   Rispondi citando il messaggio o parte di esso
Old 19-02-2007, 09:36   #8
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
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, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 19-02-2007, 09: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, 09: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


Redmi Pad 2 9.7: ampio display, economico e peso contenuto, ma qualche limite nelle prestazioni Redmi Pad 2 9.7: ampio display, economico e peso...
Peugeot Polygon Concept: ecco il futuro delle utilitarie Peugeot Polygon Concept: ecco il futuro delle ut...
Reno16 Pro: il compatto di OPPO punta su fotocamera da 200MP e il nuovo Bubble! La recensione Reno16 Pro: il compatto di OPPO punta su fotocam...
 Hisense 55U7SE: tuttofare e accessibile, il MiniLED per film, sport e gioco Hisense 55U7SE: tuttofare e accessibile, il Min...
Kindle Scribe Colorsoft: riduce le cornici e diventa a colori, ma il prezzo è alto Kindle Scribe Colorsoft: riduce le cornici e div...
L'europea Mistral AI sfida tutti: il rob...
La 'casetta in Canadà' di Mark Zu...
Una batteria che dura più di 5000...
Addio smemorati: WhatsApp testa una nuov...
Italia finalmente all'avanguardia con il...
Gratis e scritto con l'IA, il convertito...
Cooler Master V8 ACE 3DHP: disponibile i...
L'IA minaccia migliaia di posti nei call...
Assetto Corsa EVO introduce il foveated ...
Il modello base di NVIDIA Shield TV potr...
Meta sta sviluppando occhiali smart capa...
Ecco degli avviatori batteria auto super...
Fujifilm firma il suo obiettivo pi&ugrav...
Le nuove auto in UE devono accorgersi se...
Speciale pulizia: robot e scope elettric...
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: 12:47.


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