1. Pointers
- Posted by John DeHope <jwap at SOUTHEAST.NET> Apr 07, 1997
- 643 views
What is all this jazz about pointers? The whole point of Euphoria programming is that it is simple and fast. Throw pointers into the mix and you just killed half of Euphoria! If you want stuff like that take up C :) The simplicity of BASIC, the speed of a compiled language, and [with some of the new memory routines in ver 1.5] the power of C. That is what Euphoria is all about !!!
2. Re: Pointers
- Posted by "Arthur Adamson (by way of Arthur Adamson <euclid at isoc.net>)" Jan 17, 1999
- 593 views
-- With all the talk of pointers, the following may save someone some --trouble. Bottom line, in a numerical sequence, the storage space is --somewhar unpredictable...so forget about pointer arithmetic. -- A small demo prog follows showing the bytes per term may change --unexpectdly as the data varies from float to float auto converted to --integer whae possible. --Demo for size of a numeric sequence. --include bytes.e --This handy bytes.e came from Rob Craig. It estimates the # of bytes needed --by an object. I have found it useful. --Bytes.e global function bytes(object x) -- estimates the number of bytes of storage needed for any -- Euphoria 2.0 data object (atom or sequence). integer space if integer(x) then return 4 elsif atom(x) then return 16 else -- sequence space = 24 -- overhead for i = 1 to length(x) do space = space + bytes(x[i]) end for return space end if end function -->integer int -->int = 1 --? bytes_needed(1) -- 4 --? bytes_needed(1.5) -- 16 --? bytes_needed({1,2,3}) -- 36 --? bytes_needed({{1.5,2.5}, {1,2}}) -- 112 --? bytes_needed({{1,2},{}, {}, {1,2}}) -- 88 , 112, 136 --? bytes_needed(int) --END bytes.e --Make a seq of floats with howMany elements sequence seq1 integer howMany howMany = 10 seq1 = repeat(1.1, howMany) --Set values all different for i = 1 to howMany by 1 do seq1[i] = seq1[i] * i end for ? bytes(howMany) --IE, an integer uses 4 bytes ? bytes(1.1) --IE, a float uses 16 bytes ? bytes(seq1) --A seq uses 24 + 4 per integer + 16 per float ? seq1 --Note, autoconversion to integer for term 10 ? (bytes(seq1) - 24) / howMany --IE, a numerical seq length is not predictable --just a check ? integer(seq1[9]) ? integer(seq1[10]) --Pointer arithmetic for a numeric sequence not a good idea. --Arthur P. Adamson, The Engine Man, euclid at isoc.net