Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    [C] Funzioni che ritornano un vettore

    mi rendo conto che a volte faccio domande inutili...ma sto per impazzire... io devo fare una funzione che mi ritorna un vettore di unsigned int di 3 elementi...
    mi potete scrivere un codice di esempio?... cioè la sintassi giusta per far in modo che ritorni un vettore e non una singola variabile...grazie

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Devi restituire un puntatore di quel tipo, quindi

    unsigned int *funzione(... argomenti ...)
    {
    ...
    }

    avendo cura di allocare internamente in maniera dinamica il vettore e restituirne l'indirizzo con la return ...

  3. #3
    puoi spiegarti un pò meglio...
    io ho questa funzione

    void input16 (unsigned int a){
    unsigned int op[2];
    unsigned int ms[2];
    int i;

    ms[0]=65535;
    ms[1]=4294901760;

    for (i=0;i<1;i++) op[i]=a & ms[i];
    op[1]=op[1]>>16;
    for (i=1;i>=0;i--) printf ("%u ",op[i]);
    }

    vorrei che mi ritornasse il vettore op[] come devo fare...

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Guitar_joker87
    void input16 (unsigned int a){
    unsigned int op[2];
    unsigned int ms[2];
    ....
    }

    vorrei che mi ritornasse il vettore op[] come devo fare...
    Devi allocarlo dinamicamente, il vettore. Gli array 'op' e 'ms' che hai definito, sono allocati sullo stack. Quando la funzione termina, essi spariscono.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    devo cioè usare una malloc? nel main? potri allocare solo op se mi serve solo quello?non si potrebbe scrivere un pò di codice per farmi capire?...

  6. #6
    Dovrebbe diventare una cosa del genere:

    codice:
    #include <stdlib.h>
    #include <stdio.h>
    
    #define N 2
    
    unsigned int* input16 (unsigned int a){
        
        unsigned int* op = (unsigned int*)malloc(sizeof(unsigned int)*N);
        
        if(op == NULL){
              exit(1);
        }
        
        unsigned int ms[N];
        int i;
        
        ms[0]=65535;
        ms[1]=4294901760;
        
        for (i=0;i<N;i++)
            op[i]=a & ms[i];
        
        op[1]=op[1]>>16;
        
        for (i=0;i<N;i++)
            printf ("%u ",op[i]);
            
        return op;
    }
    
    int main(){
        
        unsigned int* p = input16(5);
        int k;
        
        printf("\n");
        
        for(k=0;k<N;k++)
            printf("%u ",p[k]);
        delete[] p;    
        getchar();
        return 0;
    }

  7. #7
    Originariamente inviato da zero85
    codice:
    ...
        for(k=0;k<N;k++)
            printf("%u ",p[k]);
        delete[] p;    
        getchar();
        return 0;
    }
    In un codice C usi il delete ?
    01010011 01100001 01101101 01110101 01100101 01101100 01100101 01011111 00110111 00110000
    All errors are undocumented features waiting to be discovered.

  8. #8
    O porca troppa abitudine a fare misti c/c++

    usa al posto la funzione free()

  9. #9
    grazie... siete stati molto esaurienti

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 © 2025 vBulletin Solutions, Inc. All rights reserved.