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

    [C]Passaggio di varabili strutturate

    quando uso le funzioni (o le prcedure) in che modo posso passare a quest'ultime le matrici?
    (Esempio: scrivere una procedura che ricevute in ingresso 4 matrici A;B;C;D; metta in D la somma delle 3 matrici A;B;C

  2. #2
    Utente di HTML.it L'avatar di DydBoy
    Registrato dal
    Jul 2005
    Messaggi
    165
    Lavora con i puntatori a struttura
    In questo modo, dall'interno di funzioni, puoi modificare i valori contenuti.

  3. #3
    si ma non li so' usare per strutture, per valori semplici si basta che metto il tipo di valore puntato e poi *nomepunt. Quell'esercizio mi e' capitato ieri allo scritto di Calcolatori I. Sarei curioso di sapere come si risolve. Il prof mi aveva gia' detto che per fare cio' dovevo usare il "typedef matrice1 d" e poi operare con i nuovi valori. Pero' se io dichiaro una matrice intera come una variabile (esempio) b come prendo i valori all'interno della matrice?

  4. #4
    Non ho ben capito se vuoi passare delle strutture (e quindi il consiglio dei puntatori è quello più efficente perchè eviti copie inutile delle strutture, a meno di non usare il C++ ed i reference) oppure vuoi passare una matrice di valori e quindi un array (e quindi torniamo ai puntatori perchè in C quello che puoi passare è solo il puntatore al primo elemento).
    Faccio qualche esempio.
    Supponiamo la struttura (uso il C++ che preferisco perchè lo uso di più):
    codice:
    struct pinco
    {
       int campo1;
       int campo2;
    
       pinco() : campo1(0), campo2(0) {}
    };
    Posso fare così:
    codice:
    void f(pinco p)
    {
      p.campo1 = 10;
      p.campo2 = 10;
    }
    
    ...
    pinco c;
    f(c);
    ma quando esco da f in effetti ho fatto le modifiche ad una copia locale.

    Altrimenti:
    codice:
    void f(pinco *p)
    {
      p->campo1 = 10;
      p->campo2 = 10;
    }
    
    ...
    pinco c;
    f(&c);
    qua all'uscita di f ho fatto la modifica direttamente a c.

    Quello che preferisco.
    codice:
    void f(pinco &p)
    {
      p.campo1 = 10;
      p.campo2 = 10;
    }
    
    ...
    pinco c;
    f(c);
    lo stesso del caso dei puntatori.

    Se invece vuoi una matrice, avresti:
    codice:
    int a[10];
    per passarla ad una funzione F l'unica cosa che puoi fare è:
    codice:
    void F(int *p)
    {
      p[0] = 10;
      p[1] = 10;
      p[2] = 10;
      ...
    }
    ovviamente attento ai limiti dell'array.

    L'uso del typedef direi che ha senso in C (non ANSI) per evitare di dovere scrivere struct
    pippo ogni volta che definisci una variabile/parametro di quel tipo; insomma per dare un nome diverso ad una struttura e poter eliminare il suffisso struct (insomma definire in effetti un nuovo tipo).

    Spero di non aver detto qualcosa di sbagliato perchè ormai molte cose le faccio in automatico e non ci penso più (tanto è il compilatore che mi avvisa degli errori ).

    Ciao e spero di esserti stato di aiuto e di non aver complicato le cose.

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.