ILE C/C++ Programmer's Guide


Casting Pointers

In the C language, casting is a construct to view a data object temporarily as another data type.

When you cast pointers, especially for non-data object pointers, consider the following characteristics and constraints:

Example:

Figure 193 shows OS/400 pointer casting:

Figure 193. ILE C Source to Show OS/400 pointer casting




#include <pointer.h>
#pragma datamodel(p128)
#pragma linkage(TESTPTR, OS)
#pragma datamodel(pop)
void TESTPTR(void); /* System pointer to this program */
_SYSPTR sysp; /* System pointer */
_OPENPTR opnp; /* open pointer */
void (*fp)(void); /* function pointer */
int i = 1; /* integer */
int *ip = &i; /* Space pointer */
void main (void) { 
fp = &main; /* initialize function pointer */
sysp = &TESTPTR; /* initialize system pointer */
 
i = (int) ip; /* segment offset stored in i */
ip = (int *) i; /* address stored is invalid */
i = (int) fp; /* zero is stored in i */
i = 2; 
fp = (void (*)()) i; /* address stored is invalid */
i = 3; 
sysp = (_SYSPTR) i; /* address stored is invalid */
opnp = &i; /* address of i stored in open pointer */
i = (int) opnp; /* offset of space pointer contained */
/* in open pointer is stored in i */
i = 4; 
opnp = (_OPENPTR) i; /* address stored is invalid */
i = (int) opnp; /* i is set to integer value stored (4)*/
}


[ Top of Page | Previous Page | Next Page | Table of Contents ]