Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2013
    residenza
    Bologna
    Messaggi
    31

    Linguaggio C: array che torna da una funzione

    Ciao a tutti ragazzi, ho un dubbio riguardo ad un programma in linguaggio C.
    Mi spiego meglio: io ho due vettori interi che possono contenere n elementi. Eseguo due cicli, ognuno che valorizzerà il vettore1 e il vettore2, dopodiché, chiamo una funzione a cui passo v1, v2 e v3. Dentro alla funzione, v3 viene valorizzato con la somma di v1 + v2. Dopodiché ritorno v3 al main.
    La domanda è questa: ho notato che se io scrivo v3 = somma_vettori(v1, v2, v3); avrò che nel vettore 3 ci sono, effettivamente le somme di v1 e 2, ma anche se scrivo semplicemente somma_vettori(v1, v2, v3); mi ritorna il dato. Ho provato a guardare sui libri di testo e anche sulle video lezioni, ma non riesco a capire quale delle due sintassi è formalmente è corretta, sebbene entrambe funzionino.


    Vi riepilogo il mio programmino:


    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #define n 1
    int main()
    {
        int i;
        int v1[n], v2[n], v3[n];
    
    
        for (i=0; i<=n-1; i++){
            printf("V1 - INS. VAL. POS. %d: " , i);
            scanf("%d", &v1[i]);
        }
    
    
        for (i=0; i<=n-1; i++){
            printf("V2 - INS. VAL. POS. %d: ", i);
            scanf("%d", &v2[i]);
        }
    
    
       somma_vettori(v1, v2, v3);
    
    
           for (i=0; i<=n-1; i++){
            printf("V3 - POS. %d VAL. %d\n", i+1, v3[i]);
        }
    
    
    
    
    
    
    }
    
    
    int somma_vettori(int v1[n], int v2[n], int v3[n]) {
    
    
        //DEFINISCO LA VARIABILE CHE UTILIZZERO' PER SCORRERE I VETTORI v1 E v2
        int i;
    
    
     printf("ECCO I VALORI CHE HAI INSERITO...\n");
    
    
        for (i=0; i<=n-1; i++){
                printf("V1 - POS. %d VAL. %d\n", i, v1[i]);
        }
    
    
        for (i=0; i<=n-1; i++){
            printf("V2 - POS. %d VAL. %d\n", i, v2[i]);
        }
    
    
        //FACCIO LA SOMMA TRA I DUE VETTORI
    
    
        for (i=0; i<=n-1; i++) {
            v3[i] = v1[i] + v2[i];
        }
    
    
        return (v3);;
    
    
    }
    Grazie mille a tutti

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    (doppio)
    Ultima modifica di oregon; 12-03-2016 a 01:43
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    La forma corretta è

    void somma_vettori(int v1[n], int v2[n], int v3[n])

    e il compilatore dovrebbe darti un errore nella

    return (v3);

    dato che v3 è un puntatore ad intero e non un intero come la tua funzione restituisce.

    Se passi il puntatore al vettore di destinazione, il risultato lo avrai direttamente nel vettore e non dovrai restituirlo.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.