Newsgroup: it.comp.lang.c
Titolo: Domanda su puntatori...

che differnza c'è nello scrivere
buffer[0]=p[lun];
e
buffer=&p[lun];
Nel primo caso funziona, nel secondo mi da errore...
Grazie 1000 a tutti!
Enrico S.

cosě forse č piů chiaro...
char buffer[70];
while(fgets(buffer,60,fp1)!=NULL){
     while((p=strstr(buffer,bu))!=NULL){
       posto=p-c;
       for(i=posto,j=0;j<lun;i++,j++){
         if((buffer[i]>40)&&(buffer[i]<91))
            buffer[i]+=32;
       } /* Chiusura FOR */
     buffer[0]=p[lun];
     }
Grzie 1000!
Enrico S.

 buffer=&p[lun];
buffer[0] = p[lun];
assegni al priomo elemento dell'array buffer il valore contenuto in p]lun].
buffer = &p[len];
assegni all'array l'indirizzo in memoria di p[lun]. Visto che poi nel
secondo post hai mostrato che buffer è un array e non un puntatore, questa
cosa non si può fare perchè gli array possono essere visti come puntatori
costanti e quindi non è possibile modificare l'indirizzo del loro primo
elemento. Se invece buffer fosse stato dichiarato come
char *buffer;
buffer = &p[lun];  //non da errori.
allora è consentito modificare l'indirizzo in memoria del puntatore.

gli array possono essere visti come puntatori costanti
Occhio a queste affermazioni...
--
Andrea Laforgia - walkietalkie(at)
libero.it
#exclude <windows.h>

L'array e' un insieme di variabili dello stesso tipo memorizzate in
locazioni di memoria contigue a cui si fa riferimento con un unico nome
comune e l'uso degli indici.
Gli indici (dell'array) vanno da 0 a size-1.
Puntatori ed array sono strettamente correlati.
Il nome dell'array puo' essere usato come puntatore al suo primo elemento.
L'accesso agli elementi dell'array puo' avvenire con la notazione tipica
degli array ( a[3] ) oppure con la notazione tipica dei puntatori (
*(a+3) ).
Tanto per chiarire un pochino le idee sugli array a Enrico S.
Alex

Il nome dell'array puo' essere usato come puntatore al suo primo elemento.
Non sempre, ci sono dei casi specifici in cui questo non e'
vero.


 vero.
   Non l'avevi *plonkato* due o tre messaggi fa? :)
	Alla prossima,
		Marco

    Non l'avevi *plonkato* due o tre messaggi fa? :)
tutto chiacchiere e distintivo :)

grazie per la risposta...il fatto č che il nome dell'array non dovrebbe
essere un puntatore al suo primo elemento? Se cosě perchč non funzia il
codice del mio messaggio?
Grazie 1000 per la risposta!
Enrico S.

   Non l'avevi *plonkato* due o tre messaggi fa? :)
Mah... ho notato che il kill-file sotto Agent non funziona tanto
bene, esclude parte dei messaggi... lo studio meglio... mi ci
vuole...

essere un puntatore al suo primo elemento? 
No.
Nella maggior parte dei casi un array *decade* (dallo standard
"decays") nel puntatore al suo primo elemento.

 Occhio a queste affermazioni...
Già.
Puntatore costante non significa array e neanche viceversa. E' solo che
similmente ad un puntatore costante (che si dichiara così giusto? :  int *
const ptr) l'indirizzo di un array non può essere modificato :
int a[10];
...
a++;    //illegale.


Ovvero?
Grazie 1000 per la risposta!!!
Enrico S.
--
Webmaster della Pagina NON Ufficiale del SonyCRX100
SonyCRX120,  SonyCRX140E/S, SonyCRX100EX, HP8100
HP8200, HP9100 & HP9200
http://www.freeweb.org/computer/SonyCRX100/

Ovvero?
[#3] Except when it is the operand of the sizeof operator or
     the unary &  operator,  or  is  a  string  literal used
     to initialize  an array, an expression that has type   
     ``array of type'' is converted to an expression with
     type ``pointer to type''  that  points  to  the 
     initial  element of the array object and is not  an
     lvalue.   If  the  array  object  has register storage
     class, the behavior is undefined.
