Void Pointers

  • November 2019
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Void Pointers as PDF for free.

More details

  • Words: 278
  • Pages: 1
void pointers next: structures up: pointers previous: function pointers

contents

index

void pointers at first glance, a void pointer seems to be of limited, if any, use. however, when combined with the ability to cast such a pointer to another type, they turn out to be quite useful and flexible. consider the example of the previous section, where we constructed a function pointer to a function of type void and argument int. such a function pointer in this form could not be used for a void function with a different type of argument (for example, float). this can be done, however, through the use of void pointers, as the following example illustrates. #include <stdio.h> void use_int(void *); void use_float(void *); void greeting(void (*)(void *), void *); int main(void) { char ans; int i_age = 22; float f_age = 22.0; void *p; printf("use int (i) or float (f)? "); scanf("%c", &ans); if (ans == 'i') { p = &i_age; greeting(use_int, p); } else { p = &f_age; greeting(use_float, p); } return 0; } void greeting(void (*fp)(void *), void *q) { fp(q); } void use_int(void *r) { int a; a = * (int *) r; printf("as an integer, you are %d years old.\n", a); } void use_float(void *s) { float *b; b = (float *) s; printf("as a float, you are %f years old.\n", *b); } although this requires us to cast the void pointer into the appropriate type in the relevant subroutine (use_int or use_float), the flexibility here appears in the greeting routine, which can now handle in principle a function with any type of argument. this will especially become apparent when we discuss structures in the next section.

Related Documents

Void Pointers
November 2019 31
Pointers
November 2019 36
Pointers
May 2020 9
Pointers
November 2019 22
Void
October 2019 33
Pointers
November 2019 27