Newsgroup: it.comp.lang.visual-basic
Titolo: Puntatori

Domanda:
in c esiste una roba del tipo  char *Nome, char **ptr.
in VB come posso ottenere un risultato analogo?
(Sperando la mia Mail venga postata una volta sola, BUONGIORNO A TUTTI)
--
----------------------------
Andrea Melis
ame...@pianeta.it
----------------------------

 wrote in message
93211847...@saturno.pianeta.it...


...



Se si tratta di una stringa, utilizzando il tipo string del VB
--
Roal Zanazzi
z...@iol.it


Sbagliato! In C non esistono le stringhe, ma puntatori ad array di
caratteri.

you wrote :
#La "roba" char * in C/C++ e' non solo un puntatore a variabile di tipoo char
#(byte), ma anche (in genere) una stringa
Una precisazione : un puntatore "char *" e' sempre e solo un puntatore
a carattere.
Il fatto che venga usato per rappresentare stringhe e' una convenzione
del programmatore, ma non esiste il concetto di "stringa" in C.
Andrea Laforgia        (
andrea_...@bigfoot.com
)
----------------------------------------------------
There is nothing better for understanding a kangaroo
than seeing it jump.
----------------------------------------------------

you wrote :
#Sbagliato! In C non esistono le stringhe, ma puntatori ad array di
#caratteri.
Mamma mia che confusione !
In C un puntatore ad array di caratteri e' una cosa e un puntatore a
caratteri ne' e' un'altra.
Dire che in C le stringhe vengono rappresentate con puntatori ad array
di caratteri e' assolutamente sbagliato in quanto esse si
rappresentano o come array di caratteri o come puntatore a caratteri.
Un puntatore ad array di N caratteri e' dichiarato come :
char (*p)[N];
Un array di N caratteri come 
char p[N];
e un puntatore a carattere (estendibile "a caratteri" con
l'allocazione di memoria) come
char *p ;



Lo dici a uno che col C (i listati stampati, intendo) ci andava anche al
ces..o...
Per la cronaca in C le "stringhe" sono puntatori a caratteri, NON puntatori
ad ARRAY di carattery.
Ho scritto "stringa" per far capire che e' il corrispondente del tipo string
di VB.
So benissimo che in C le stringhe come tipo elementare non esistono.
Ma cosa avete mangiato tutti quanti?!? Pane e critichina?
--
Roal Zanazzi
z...@iol.it


Bene, pero' la lezioncina di C su questo NG e' decisamente OT...
--
Roal Zanazzi
z...@iol.it

you wrote :
#Che possono essere intesi come stringhe a lunghezza fissa e stringhe a
#lunghezza variabile (grosso modo), ma possono venire trattati esattamente
#nello stesso modo (belli i puntatori in C !! :-)
Non e' vero.
Array e puntatori non vengono trattati allo stesso modo.
#Bene, pero' la lezioncina di C su questo NG e' decisamente OT...
Allora imparate a dire le cose corrette sul linguaggio.



Ipse dixit!
--
Roal Zanazzi
z...@iol.it

you wrote :
#Dal compilatore no (a parte che dipende dal compilatore, comunque), ma per
#quanto riguarda il programmatore la differenza non esiste (tanto e' vero che
#e' possibile utilizzare i puntatori per accedere ai singoli elementi di un
#array (e in alcuni compilatori e' leggermente piu' veloce).
Continui a dire cose imprecise e sbagliate.
I vettori e i puntatori in C sono due cose assolutamente diverse, sia
per il compilatore, sia per il programmatore.
Il fatto che in determinati contesti si possa scambiare la notazione
non implica che essi siano la stessa cosa.
I puntatori sono "lvalue", gli array sono "lvalue non modificabili" e
c'e' una gran bella differenza.
Quando si accede ai singoli elementi di un array non si sta
utilizzando un puntatore, ma il nome di un array "decaduto" (esistono
3 eccezioni in cui succede) in puntatore al suo primo elemento e da
li' indirizzato mediante indice.
In quanto alla velocita', non e' detto che i puntatori siano piu'
veloci, anzi, dato l'indirizzamento indiretto in piu' che implicano si
presume che essi siano piu' lenti dei vettori, anche se i compilatori
ottimizzati tendono a pareggiare le velocita'.


Andrea Laforgia wrote:
Scusa se mi intrometto nella discussione, ma vorrei chiederti una cosa:
ti rendi conto che, se anche tutto quello che dici fosse oro colato (non
lo so, non ho le competenze per dirlo) ti sei allontanato anni luce dal
subject iniziale?
La domanda era:
 >in c esiste una roba del tipo  char *Nome, char **ptr.
Credo che il tono della risposta vada anche calibrato sul tono della
domanda: sei uno ti chiede "una roba del tipo" e tu gli rispondi con una
dissertazione sull'intima essenza del c, credi che la risposta gli possa
servire? La risposta di Roal forse non era correttissima (vedi parentesi
iniziale), pero', alla fine, era piu' utile della tua...
Ciao
Brando
-- 
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Sito comune di it.lang.vb  :  
http://www.murialdo.it/it_lang_vb
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

you wrote :
#Scusa se mi intrometto nella discussione, ma vorrei chiederti una cosa:
#ti rendi conto che, se anche tutto quello che dici fosse oro colato (non
#lo so, non ho le competenze per dirlo) ti sei allontanato anni luce dal
#subject iniziale?
Ti invito a rileggere il thread per renderti conto che le mie risposte
non sono altro che correzioni a messaggi, a loro volta di risposta, ma
scorretti.
Messaggi come quello che hai appena postato non hanno alcuna utilita'
e non giovano affatto al thread, che e' gia' abbastanza off-topic (e
non perche' l'abbia voluto io).
#Credo che il tono della risposta vada anche calibrato sul tono della
#domanda: sei uno ti chiede "una roba del tipo" e tu gli rispondi con una
#dissertazione sull'intima essenza del c, credi che la risposta gli possa
#servire?
A parte il fatto che io non ho risposto all'autore, ma ho cercato di
correggere coloro che a loro volta hanno risposto, ti faccio presente
che la mia non e' una "dissertazione sull'intima essenza del C", ma la
correzione a cose imprecise e a volte errate che su alcuni aspetti di
questo linguaggio sono state dette.
#La risposta di Roal forse non era correttissima (vedi parentesi
#iniziale), pero', alla fine, era piu' utile della tua...
Infatti la risposta di Roal non era sbagliata, ma imprecisa.
Io ho cercato di precisarla e basta e da questo punto di vista
suppongo che l'utilita' fosse molto maggiore.
Se poi si dicono cose errate sul linguaggio, bisogna per forza di cose
correggerle. 
La risposta di Roal era imprecisa e ho cercato di correggerla, quelle
seguenti erano sbagliate ed ho cercato di correggerle (vedi gli altri
messaggi).
E' ovvio che se ti limiti a giudicare solo l'ultimo messaggio, di
tutto il thread non ci capisci niente.
Ti prego di prestare maggiore attenzione la prossima volta.


 Ti prego di prestare maggiore attenzione la prossima volta.
Non ho la pretesa di capire il senso del thread leggendo l'ultimo
messaggio, ragion per cui lo ho letto tutto. E, anzi, mi fanno sempre un
po' incavolare quelli che, senza sapere niente, dicono: "Non capisci
niente, non hai seguito". Ci vorrebbe un po' di umilta' in piu'...
Comunque ripeto quello che gia'ho detto: forse la tua risposta, per
quanto corretta,  non e' stata utile a nessuno: non perche' non hai le
competenze, ma perche' hai sbagliato "pubblico".


you wrote :
#Sei sicuro che quello che hai postato sia di utilita' al thread? Come ti
#ho gia' detto, la domanda avrebbe voluto una risposta molto diversa, nel
#tono, dalle tue. E' un po' come quando scrivono "Come si fa a far
#sparire quel bottoncino con la X in alto a sinistra nella finestra" e la
#risposta e' "Prova a subclassare la form"... Ma cacchio, siete sicuri
#che chi pone una domanda in quel modo capisca quella riposta?
E' evidente che, o non mi sono spiegato, o ti sforzi di non capire,
dato che hai riscritto esattamente le parole del messaggio precedente.
Ti ripeto per l'ennesima volta che se io avessi saputo che in VB non
si usano i puntatori, avrei risposto all'amico dicendo "no in VB non
si usano i puntatori", ma dato che non so se si usino o meno ho
evitato di rispondere ed ho fatto la cosa migliore.
Poi qualcuno ha cominciato a parlare di C dicendo cose imprecise e
sbagliate (anche questo te lo ripeto per l'ennesima volta) e ho
ribattuto facendo presente le correzioni.
Poi sei intervenuto tu uscendotene con un messaggio assolutamente
inutile e slegato dal thread.
#> Io ho cercato di precisarla e basta e da questo punto di vista
#> suppongo che l'utilita' fosse molto maggiore.
#
#Utilita' per chi, scusa? Per chi ha fatto partire il thread o per Roal?
Ammetterai che e' ridicolo affermare che un messaggio scorretto sul C
e' piu' utile di uno corretto.
 
#Non ho la pretesa di capire il senso del thread leggendo l'ultimo
#messaggio, ragion per cui lo ho letto tutto. E, anzi, mi fanno sempre un
#po' incavolare quelli che, senza sapere niente, dicono: "Non capisci
#niente, non hai seguito". Ci vorrebbe un po' di umilta' in piu'...
Se qualcuno giudica in questo modo i tuoi messaggi e' perche' e' cosi'
che lasci intravedere.
Dubito molto che tu abbia letto tutto il thread perche' non ti sei
accorto e continui a ribattere su questo punto che io non ho affatto
risposto all'autore originale del thread ma a chi ha ribattuto in modo
sbagliato.
#Comunque ripeto quello che gia'ho detto: forse la tua risposta, per
#quanto corretta,  non e' stata utile a nessuno: non perche' non hai le
#competenze, ma perche' hai sbagliato "pubblico".
Che la mia risposta non sia stata utile a nessuno e' una tua opinione
personale alla quale mi permetto di non dare alcuna importanza, se
permetti.
Non puoi affermare che i messaggi degli altri siano inutili quando tu
ne posti di ancora piu' inutili e deleteri.
Stai contribuendo ad appiattire il livello di questo thread in un modo
che non capisco proprio.
Non vedo l'utilita' del tuo intervento che, oltre ad essere fuori tema
con il thread tende ad allungare le polemiche in modo molto
fastidioso.
Potevi risparmiarti l'uso delle dita e pensare a cose piu' importanti.
E adesso non te ne uscire con frasi del tipo "basta mi sono offeso, da
adesso in poi ti ignorero'", cerca di inventarti qualcosa di piu'
originale...


 ottimizzati tendono a pareggiare le velocita'.
Non hai mai confrontato il codice macchina prodotto nei due casi, eh?
--
Roal Zanazzi
z...@iol.it

you wrote :
#Ehm, avrei tante cose da ridire su quanto scrivi sotto, ma dato che ho gia'
#detto che siamo OT...
#Se proprio vuoi continuare, scrivimi in privato.
Ma per favore...
Se vuoi vieni a trovarmi tu su it.comp.lang.c
#> I puntatori sono "lvalue", gli array sono "lvalue non modificabili" e
#> c'e' una gran bella differenza.
#Gli LValue sono _sempre_ modificabili, forse ti riferivi a qualcos'altro.
Questa e' bella.
Lo standard definisce i nomi dei vettori come "lvalue non
modificabili".
Aggiornati.
#Non hai mai confrontato il codice macchina prodotto nei due casi, eh?
Il codice macchina non significa nulla.
Prova a scrivere a++ dove a e' il nome di un vettore.


 Se vuoi vieni a trovarmi tu su it.comp.lang.c
Roal, lascia perdere cosě, altrimenti la prossima volta ti invita
su it.fan.culo ;-))
Ragazzi, siete MOOOLTO OT, lo sapete ?
Bye, G.
--
---------------------------------------------
    Le risposte alle tue domande le trovi sul
    Sito Comune di questo NewsGroup:
 
http://www.murialdo.it/it_lang_vb
---------------------------------------------
Real E-address: 
gaet...@hotmail.com