Skip to contentSkip to conversation

Passing pointer as member of struct to function

DISCUSSION Mihai Dontu 1 participant 1 message Jan 10, 2006

lore
Share & tools
lore
#0 lore raw

-------- Original Message --------
Subject: Re: Passing pointer as member of struct to function
Date: Tue, 10 Jan 2006 16:29:50 +0200
From: Mihai Dontu <[email protected]>
To: Reuben D. Budiardja <[email protected]>
References: <[email protected]>

Quoted 32 lines · Reuben D. Budiardja

Hello,
I have the following problem, which probably best explained if I give the sample code first:

testNuclei.c:
---------------------
#include <stdlib.h>
#include <string.h>
#include <stdio.h>

typedef struct nucleiType

    {
    char nucleiName[5];
    int protonNumber; 
    int neutronNumber;
    } nucleiType;

typedef struct reaclibType

    {
    int reactionType;           
    nucleiType * leftNuclei[2]; 
    nucleiType * rightNuclei[2];
    double QValue;
    } reaclibType;

int setNuclei(nucleiType * nuclei);
char * getNucleiName(nucleiType * nuclei);

int main(int argc, char ** argv)
{
reaclibType reactionRates[100];
nucleiType * myNuclei;

Quoted 4 lines

/* Let's set the leftNuclei using the setNuclei function.
We want leftNuclei to point to a valid nuclei (which is set in the function) */
setNuclei(reactionRates[1].leftNuclei[0]);

    setNuclei(&(reactionRates[1].leftNuclei[0]));
Quoted 11 lines
  
    /* Now let's see if the leftNuclei has been set */

myNuclei = reactionRates[1].leftNuclei[0]; printf("reactionRate leftNuclei: %s\n", myNuclei->nucleiName);

  return 0;
  }

/* Function to set the nuclei in the reaclibType */

int setNuclei(nucleiType * nuclei)

int setNuclei(nucleiType ** nuclei)

Quoted 12 lines
  {
  nucleiType * newNuclei;
   /* Create new nuclei 
    (in the real program this is defined elsewhere 
     and read from data file 
  */ 
  newNuclei = (nucleiType *) malloc(sizeof(nucleiType));
  strcpy(newNuclei->nucleiName, "sc32");
  newNuclei->protonNumber = 21; 
  newNuclei->neutronNumber = 11;
Quoted 2 lines

// Now trying to set the passed nuclei to this newNuclei nuclei = newNuclei;

    *nuclei = newNuclei;
Quoted 14 lines

return 0;
}
------------------------------------------------------------------------------------

As you can probably guess already, my problem is that I want to be able to set the leftNuclei[i], which is a member of a struct reaclibType in the main program through a function. When I run this program, the output that I get is:

$ ./a.out reactionRate leftNuclei: (null)

What I really want is to get the following output:

$ ./a.out reactionRate leftNuclei: sc32

Any help on this ? Am I confusing something ? Help would be greatly appreciated. Thanks in advance. RDB

Signature · 2 lines
This message was scanned for spam and viruses by BitDefender.
For more information please visit http://www.bitdefender.com/