Ciao a tutti, ho una domanda da fare:
Dato il codice:
codice:
using namespace std;
#include <iostream>
void cambia(int m, int n[7]){
    for(int i=0;i<7;i++) 
        cout << "n["<<i<<"]: " << n[i] <<endl;
        (*(n+m))--;
        m++;
        n--;
}


int main(){
    int vet[] ={4,2,3,2,4};
    cambia(vet[4], vet-1);
    cambia(0,&vet[4]);
    int i=0;
    for(i=0; i<5; i++)
        cout << vet[i];
    return 0;
    
}
faccendolo eseguire, noto che
codice:
vet[-1]=0
..?? non dovrebbe esserci memoria sporca?

Tanto per darvi un idea: eseguendo il codice ho l'output:

codice:
bog@bog-desktop:~$ ./a.out n[0]: 0
n[1]: 4
n[2]: 2
n[3]: 3
n[4]: 2
n[5]: 4
n[6]: 32767
n[0]: 4
n[1]: 32767
n[2]: 0
n[3]: 0
n[4]: 0
n[5]: 0
n[6]: -1924407835
42313
Poi vorrei fare un altra domanda:
come potete vedere, nell'esercizio, passo un vettore di dimensione 5 ad un vettore di dimensione 7. Ok, immagino che compilera' i 5 campi con i valori passatigli e gli altri rimaranno memoria sporca. Ma se io passassi il mio vettore di 5 elementi ad uno di 2? i primi 2 come funzionerebbe?

In realta', io so che vet[] non è altro che un puntatore al primo elemento dei valori inseritivi. quindi ... che io passi il mio vettore di 5 elementi ad un vettore di 10 o solo 1 ... non fa differenza, no ?
se io so che dentro ci sono 5 elementi, io posso scrivere vettore[5] anche se il vettre è stato dichiarato ti dimensione 1. Giusto?

GRazie a tutti