Array,struct e dintorni

di
Anonimizzato29808
il
4 risposte

Array,struct e dintorni

Salve a tutti!!!
Potreste chiarirmi il seguente fatto ossia che il nome di un array corrisponde all'indirizzo della sua prima cella di memoria?
se ho una funzione che riceve come parametro un puntatore ad un intero allora a quetsa funzione posso passarci tranquillamente il nome di un array di interi precedentemente dichiarato,invece,non funziona se ci passo ad esempio la cella numero 3;faccio un esempio per essere più chiaro:

#include<stdio.h>

void funct(int *p);
int main(){
 int vett[5]={1,2,3,4,5}
 printf("\nValore del terzo elemento: %d ",vett[2]);
 funct(vett);
 printf("\Valore del terzo elemento: %d",vett[2]);
 return 0;
}

void funct(int *p){
 *(p+2)=*(p+2)+5;
}
invece non posso fare: funct(vett[2]); perchè solo il nome del vettore corrisponde ad un puntatore(in particolare un puntatore che punta alla prima cella del'array).Giusto??
E per quanto riguarda le matrici o in generale array multidimensionali?
Per quanto riguarda le struct vale lo stesso discorso,ossia che il nome di una struct corrisponde ad un puntatore al suo primo campo?Sempre sulle struct: i vari campi di una struct sono rappresentati in maniera contigua in memoria così come le celle di un array?
Attendo chiarimenti grazie.
Mi scuso se le domande sono piuttosto banali ma non riesco proprio a chiarirmi questi concetti..

4 Risposte

  • Re: Array,struct e dintorni

    Non puoi fare funct(vett[2]) , se vuoi puntare alla terza cella devi fare funct(vett + 2)
  • Re: Array,struct e dintorni

    Non ho capito il tuo problema ... a parte quanto suggerito potresti scrivere anche

    funct(&vett[2])
  • Re: Array,struct e dintorni

    Salve!!
    Grazie per l'aiuto.
    Ok è chiaro!!
    Invece per quanto riguarda una struct?
  • Re: Array,struct e dintorni

    Non cambia praticamente nulla
Devi accedere o registrarti per scrivere nel forum
4 risposte