Path: utzoo!utgpu!jarvis.csri.toronto.edu!clyde.concordia.ca!uunet!snorkelwacker!tut.cis.ohio-state.edu!ucbvax!hplabs!hp-pcd!hpcvia!brianh From: brianh@hpcvia.CV.HP.COM (brian_helterline) Newsgroups: comp.lang.c Subject: Different Pointer Types Message-ID: <31530004@hpcvia.CV.HP.COM> Date: 6 Mar 90 16:16:38 GMT Organization: Hewlett-Packard Co., Corvallis, Oregon Lines: 60 I have a question about the following code. Given a structure like: struct FOO { int type_of_data; int number_of_elements; union { int *int_ptr; unsigned int *un_int_ptr; long *long_ptr; } ptr; }; And a fuction to sum up the elements: double sum( struct FOO foo ) { int i; element_size; long sum = 0L; char *data_ptr; switch ( foo.type_of_data ) { case 0 : /* integer data */ data_ptr = (char *) foo.ptr.int_ptr; element_size = sizeof( int ); break; case 1 : /* unsigned data */ data_ptr = (char *) foo.ptr.un_int_ptr; element_size = sizeof( unsigned int ); break; case 2 : /* long data */ data_ptr = (char *) foo.ptr.long_ptr; element_size = sizeof( long ); break; default : abort_with_error(); } for( i=0; i