|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Jul 2005
Messaggi: 156
|
[C/C++] char * e stringhe
Ragazzi ho qualche problemino con la manipolazione delle stringhe.
Supponiamo di avere una classe player con un attibuto name (char name[32]) con un metodo SetName. Nell' interfaccia perchè il metodo è definito così (in Public)? void SetName(char* newname) Cioè io penso (da ignorante) che al metodo SetName vada passata una stringa... perchè invece gli viene passato un puntatore a un elemento di tipo char? Grazie ragazzi non riesco a capirlo! |
|
|
|
|
|
#2 |
|
Member
Iscritto dal: Jul 2005
Messaggi: 156
|
Credo che la domanda sia equivalente a:
Mi potete spiegare questa istruzione char *line = "short line for testing"? Grazie |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
|
bè un puntatore a char può essere usato per allocare una stringa.. infatti il senso è quello.. spero di non aver detto qualche cavoltata.. cioè è come pensi tu si passa una stringa solo che tramite puntatore a char..
|
|
|
|
|
|
#4 |
|
Member
Iscritto dal: Jul 2005
Messaggi: 156
|
Grazie per l' interesse....
Però poi il metodo viene utilizzato in questo modo: player.SetName("Hero"); Cioè poi in effetti gli passo una stringa non un puntatore a char.... cioè come se per il c++ stringhe, array di char e char* fossero la stesa cosa. Magari qualcno più esperto può farmi un po' luce. Grazias |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Sep 2002
Messaggi: 409
|
Array di char e puntatori a char sono due cose differenti.
L'Array, come già sai, è una sequenza di elementi. In questo caso char. Il puntatore invece contiene l'indirizzo di un elemento. char *line = "short line for testing"; Con questa istruzione definisci il puntatore a char line, il quale viene inizzializzato con l'indirizzo del primo byte dell'array di char contenente la stringa "short line for testing". In c, non puoi passare come parametro ad una funzione un array, ma solo il suo indirizzo. Quindi quando chiami il metodo player.SetName("Hero"); viene passato l'indirizzo dell'array di char (stringa) "Hero", e non la stringa stessa. Spero di esser stato abbastanza chiaro....
__________________
Sony Vaio FE11M | EeePC 901 Linux | Intel C2D E6750 | Asus P5K-E WiFi/AP | Corsair XMS2 PC 6400 2x1GB | Hitachi 7K250 80GB Sata | Hitachi 7K250 80GB Sata | Seagate 7200.10 500GB Sata | LiteOn Combo 5232K | Nec ND-3500 | GeForce 8400GS | Monitor LG L204WT| Creative Inspire 5.1 Digital 5500 | Logitech Cordless Desktop MX | Mouse MX700 | LinkSys WAG54G | Canon IP4000 | Dell X50v | Nikon Coolpix 3100 | FujiFilm FinePix S5600 | Sony Alpha 300 18-70 |
|
|
|
|
|
#6 |
|
Member
Iscritto dal: Jul 2005
Messaggi: 156
|
Ti ringrazio caro!
Credo di aver capito |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 08:33.



















