home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #16 / NN_1992_16.iso / spool / comp / lang / c / 11815 < prev    next >
Encoding:
Internet Message Format  |  1992-07-31  |  1.5 KB

  1. Xref: sparky comp.lang.c:11815 comp.lang.pascal:4648
  2. Newsgroups: comp.lang.c,comp.lang.pascal
  3. Path: sparky!uunet!email!hp
  4. From: hp@vmars.tuwien.ac.at (Peter Holzer)
  5. Subject: Re: Flexible array indexing in C (like Pascal)
  6. Message-ID: <1992Jul31.154404.13833@email.tuwien.ac.at>
  7. Sender: news@email.tuwien.ac.at
  8. Nntp-Posting-Host: quasi.vmars.tuwien.ac.at
  9. Organization: Technical University Vienna, Dept. for Realtime Systems, AUSTRIA
  10. References: <1992Jul31.140623.9280@utdallas.edu>
  11. Date: Fri, 31 Jul 1992 15:44:04 GMT
  12. Lines: 26
  13.  
  14. veerasam@utdallas.edu (Jeyakesavan Veerasamy) writes:
  15.  
  16. >When translating Pascal programs to C, this tip may be helpful.
  17.  
  18. >It basically allocates the memory, returns the pointer
  19. >after adjusting it for index range.
  20.  
  21. >/* Allocates array for which index value low to hi will be legal,
  22. >   Only requirement is, low < hi */
  23.  
  24. >#define allocate(type,low,hi) \
  25. >    ((type *) malloc ( (hi-low+1) * sizeof(type) ) - low)
  26.  
  27. Note that this only is garantueed to work if low <= 0 <= high + 1. If
  28. this condition is not satisfied, the returned pointer does not point
  29. into the allocated memory region, and may cause an exception when used.
  30.  
  31. [This `tip' comes up every few months. I wish people would read the FAQ
  32. (Q. 2.11 in this case) before posting their pet tricks]
  33.  
  34.     Peter
  35. -- 
  36. |    _  | Peter J. Holzer                       | Think of it   |
  37. | |_|_) | Technical University Vienna           | as evolution  |
  38. | | |   | Dept. for Real-Time Systems           | in action!    |
  39. | __/   | hp@vmars.tuwien.ac.at                 |     Tony Rand |
  40.