Passaggio di un array di struttura per riferimento

di il
2 risposte

Passaggio di un array di struttura per riferimento

Salve ragazzi, mi servirebbe un aiuto in C, perchè dovrei passare un vettore di struttura per riferimento, per modificare i campi di questa struttura..ma provando non va..per favore potete aiutarmi?>.< questo è l'algoritmo ...Grazie mille in anticipo!
#include <stdio.h>
#include <stdlib.h>

struct reg
{
   int AX;
   int BX;
   int CX;
   int DX;
   int IP;
   int CS;
   int DS;
   int SS;
   int ES;
};
struct descr_proc
{
   int PID;
   struct reg registro;
   char stato;
   int priority;
   char risorse;
};
typedef struct descr_proc processo;

void crea_processo(processo *vet_p,int *i)
{
   vet_p[*i].PID=*i;
   vet_p[*i].stato='p';
   vet_p[*i].registro.AX=0;
   vet_p[*i].registro.BX=0;
   vet_p[*i].registro.CX=0;
   vet_p[*i].registro.DX=0;
   vet_p[*i].registro.IP=0;
   vet_p[*i].registro.CS=*i;
   vet_p[*i].registro.DS=*i;
   vet_p[*i].registro.SS=*i;
   vet_p[*i].registro.ES=*i;
   *i=*i+1;
}
main()
{
   int indice=0;
   processo vet_p[20];
   printf("\n PROCESSO 1\n");
   crea_processo(vet_p,&indice);
   printf("PID processo:%d\n",vet_p[indice].PID);
   printf("%d\n",indice);
   printf("\n PROCESSO 2\n");
   crea_processo(vet_p,&indice);
   printf("\nPID processo:%d\n",vet_p[indice].PID);
   printf("%d\n",indice);
   printf("\n PROCESSO 3\n");
   crea_processo(vet_p,&indice);
   printf("\nPID processo:%d\n",vet_p[indice].PID);
   printf("%d\n",indice);
   getchar();
}
PLEASE HELP ME

2 Risposte

  • Re: Passaggio di un array di struttura per riferimento

    
    *i=*i+1;
    
    tu cambi il valore di indice quindi da 0 lo incrementi ad 1 e quandi fai il printf vai a stamapre il vettore struct nella posizione 1 invece della posizione 0 , prova con printf("%d", vet_p[indice-1].PID );
  • Re: Passaggio di un array di struttura per riferimento

    Funziona!!! Grazie mille. Lo ammetto, sono due giorni che ci sbatto la testa sopra, ma non sono riuscito a trovare questo stupido errore!! ho ancora molto da imparare!! comunque grazie ancora, sei un grande
Devi accedere o registrarti per scrivere nel forum
2 risposte