home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #26 / NN_1992_26.iso / spool / comp / lang / c / 16039 < prev    next >
Encoding:
Text File  |  1992-11-06  |  1.5 KB  |  57 lines

  1. Newsgroups: comp.lang.c
  2. Path: sparky!uunet!portal!dfuller
  3. From: dfuller@portal.hq.videocart.com (Dave Fuller)
  4. Subject: Re: Returned struct
  5. Message-ID: <Bx9pJE.Et4@portal.hq.videocart.com>
  6. Organization: VideOcart Inc.
  7. X-Newsreader: Tin 1.1 PL3
  8. References: <1992Nov5.075611.14809@piccolo.cit.cornell.edu>
  9. Date: Fri, 6 Nov 1992 00:04:26 GMT
  10. Lines: 45
  11.  
  12. sl14@crux3.cit.cornell.edu (Stephen Lee) writes:
  13. : How can one make use of a struct returned by a function?  e.g.
  14. : struct complex complex_add(struct complex a, struct complex b);
  15. : I tried
  16. : struct complex z1, z2, z3;
  17. : z1.x = 0; z1.y = 3;
  18. : z2.x = 5; z2.y = 4;
  19. : z3 = complex_add(z1, z2);
  20.  
  21.   If indded you want to use a return value, it should exist as a pointer
  22. to the structure (which is either static or malloc'd, both are messy)
  23. secondly, passing structures around is not the right way to deal
  24. with them, you need to pass them as pointers. Although some compilers
  25. allow passing of structures, lets assume it will end up on one that 
  26. doesn't do this.
  27.  
  28. try int complex_add(struct complex *a, struct complex *b, struct complex *c)
  29. then call it as complex_add(&z1, &z2, &z3)
  30.  
  31. then in it the routine do this 
  32.  
  33. int complex_add(. . .definitions again . . .)
  34. {
  35.    c->x = a->x + b->x;
  36.    c->y = a->y + b->y;
  37.    .
  38.    .
  39.    or whatever you want to do with the members
  40.    .
  41.  
  42.    return 0;
  43. }
  44.  
  45.  
  46. As i said, you can pass structures with some compilers, but if you want 
  47. to do this the 'right' way, pass the pointers to them instead.
  48.  
  49. Dave Fuller
  50. dfuller@portal.hq.videocart.com
  51.