| Is it possible to add one or two bytes to a longword pointer?

Previous | Memory, C Variables, and Pointers | Next

Q: | Is it possible to add two bytes or even one byte to a longword pointer? I am using a longword pointer to write longwords to the screen, and I need to add 30 bytes to it to get to the next line. However, I can only add multiples of four bytes to it...
A: | It is possible using typecasting:
    ptr = (long*)((char*)ptr + 30);
Don't be afraid, the compiler will generate just addition: everything other is just to satisfy type checking conventions. Or alternatively, you can use even simpler form:
    (char*)ptr += 30;
Although such form is not requested to work in ANSI C standard, the most of compilers (including TIGCC) will accept this.