I don't thing the width of (char *) enters into it (it's a pointer, 8 chars in 64 bit addr space) - the direct contrast to be made is (char) vs (t_word).
Not sure if that answers the question though...
cheers M
On Mon, Aug 17, 2015 at 03:52:27PM +0000, Jonathan Wilkes via Pd-list wrote:
Thanks, I think I'm getting it. So is char* guaranteed to be the same width as sizeof(t_word)? If so, are you just using it as a shorthand?
Thanks, Jonathan
On Monday, August 17, 2015 11:31 AM, Miller Puckette <msp@ucsd.edu> wrote:
Here's an example...
#include <stdio.h>
float foo[2];
main() { Â Â printf("foo = %p\n", foo); Â Â printf("incremented as float: %p\n", foo+1); Â Â printf("incremented as (char *): %p\n", ((char *)foo)+1); }
--->
foo = 0x601038 incremented as float: 0x60103c incremented as (char *): 0x601039
Adding an integer to a pointer "increments" it - the effect depends on the type of pointer. Another way to think of it is that foo[1], say, is semantically identical to *(foo+1).
cheers Miller
On Mon, Aug 17, 2015 at 03:10:35PM +0000, Jonathan Wilkes via Pd-list wrote:
But we're dealing with an array of t_words, so onset*sizeof(t_word) is what we want anyway, no? -Jonathan
   On Monday, August 17, 2015 10:55 AM, Claude Heiland-Allen claude@mathr.co.uk wrote:  Â
 On 17/08/15 15:36, Jonathan Wilkes via Pd-list wrote:
Hi list,Wondering if someone will give me a free lesson in C programming. In g_traversal.c, there's some code to retrieve a float from a t_word* vec. It looks like this: *(t_float *)(((char *)vec) + onset)); Why does vec need to be cast to char*? t_word has to be as big as the largest member of the union, and the largest member has to be the same size as char*, right? (Otherwise we'd have big problems...)
aiui pointer arithmetic is in increments of sizeof(pointee) if onset is measured in bytes (I don't know if it is in this case, but it looks likely), then you need to have a pointer to bytes for the addition to be meaningful. vec is already a pointer, but adding onset to a t_word* would offset the address by onset*sizeof(t_word) bytes
Pd-list@lists.iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
Â
Pd-list@lists.iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
Pd-list@lists.iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list