Alex Rivera | Logout

Casting an int pointer to a char ptr and vice versa

Asked 2010-11-27T09:55:25.870
16

The problem is simple. As I understand, GCC maintains that chars will be byte-aligned and ints 4-byte-aligned in a 32-bit environment. I am also aware of C99 standard 6.3.2.3 which says that casting between misaligned pointer-types results in undefined operations. What do the other standards of C say about this? There are also many experienced coders here - any view on this will be appreciated.

int *iptr1, *iptr2;
char *cptr1, *cptr2;

iptr1 = (int *) cptr1;
cptr2 = (char *) iptr2;
Edit
Report

1 Answer

0

You can try doing:

iptr1 = atoi(cptr1); // val now = pointed by cptr1
cptr2 = atoi(iptr2); // val now = pointed by iptr2

This worked for me in DevCpp!

answered 2013-02-16T11:39:34.130

Your Answer