this question has answer here:
- pointer arithmetic void pointer in c 8 answers
i know how pointer arithmetic using arrays, how do pointer arithmetic without them?
for current assignment have void pointer memory address. have size_t
storing size in megabytes.
i trying add half of megabyte size pointer find memory address x/2
megabytes away pointer.
so
void *ptr = malloc(size_t x) void *ptr2 = ptr+x/2;
but compiler says these datatypes incompatible. right syntax this?
you should not doing pointer arithmetic on void pointers. if want increment pointer bytes count, need cast pointer char *
, apply pointer arithmetic on that.
note: arithmetic operation on void pointer not standard c, though compiler may support compiler extension, better not rely on that.
a detailed explanation on same can found here.
if possible, can avoid issue of void pointer arithmetic changing data type of ptr
char *
(or simmilar). void pointer returned malloc()
automatically , casted data type of ptr
upon assignment, , can perform arithmetic operation on ptr
, keeping in mind size of datatype.
Comments
Post a Comment