Domanda [C++] (Domanda) Caricamento di matrici con vettori di puntatori

Stato
Discussione chiusa ad ulteriori risposte.

Fabio115

Utente Bronze
18 Marzo 2014
28
1
5
46
Ultima modifica:
Premetto che ho utilizzato il tasto cerca prima di iniziare questa discussione :asd:, mi scuso in anticipo per la mia nabbagine in materia ma ho iniziato a studiare i puntatori da autodidatta appena qualche giorno fa.
Mi sono ritrovato davanti ad un problema in cui non mi ero mai imbattuto, il caricamento di matrici usando i puntatori. Analogamente al caricamento di un vettore ho provato a estrapolare questo codice:
Codice:
void Loading(int *pM1[], int *pM2[], int i){
    for (int n = 0; n < x; n++){
        M3[i][n] = *pM1[i] + n;
        M4[i][n] = *pM2[i] + n;
    }
}
int main(){
        for (int i = 0; i < y; i++)
        Loading(&M1[i][0], &M2[i][0],i);
}
Tuttavia mi da degli errori, mi dice che il vettore di un puntatore è incompatibile con una matrice ma, se provo a rendere un vettore di un puntatore una matrice di un puntatore, mi dice che "una matrice non può contenere elementi di questo tipo"

Il mio ragionamento è stato, tralasciando i cicli ed analizzando le istruzioni un'unica volta:
1-Trovo l'indirizzo della prima colonna della riga del vettore
2-Faccio puntare all'indice ennesimo di un vettore pM l'inidirizzo trovato
3-Assegno il valore dell'indirizzo alla matrice da caricare
4-Incremento l'indirizzo trovando il valore successivo
 
Nella funzione Loading non viene dichiarata da nessuna parte la variabile x... nel main non viene dichiarata da nessuna parte la variabile y... questi sono due errori gravi, iniziamo eliminando questi errori e poi procediamo oltre ;)
 
Risolto, grazie comunque per la risposta Narco, se mai qualcuno dovesse incappare nella mia stessa situazione la soluzione è semplice: Ho erroneamente pensato ai puntatori come vettori poiché contenenti indirizzi di diverse righe di una matrice, tuttavia la soluzione corretta sarebbe stata utilizzare semplici puntatori.
Codice:
void Loading(int *pM1, int *pM2, int i){
for (int n = 0; n < x; n++){
M3[i][n] = *(pM1 + n); //Se non si aggiungono le parentesi viene sommato il valore ad n e non l'indirizzo
M4[i][n] = *(pM2 + n);
}
}
int main(){
for (int i = 0; i < y; i++)
Loading(&M1[i][0], &M2[i][0],i);
}
 
Stato
Discussione chiusa ad ulteriori risposte.