Hi, Thanks for dedicating some of your time to answer me. I used:
void change_value(void** ptr) Because I wanted to enable myself to allocate memory for the pointer inside the function, therefore I needed a pointer to a pointer of type void. Void allows such a function to handle different data types in which case an ordinal typed parameter may be used to allow a switch statement within the function to handle the different data types. I used such a construct in Delphi Pascal in the past, and consider it a powerful feature that can have its uses. This is why I am anxious to comprehend the why behind pointer to pointer use. This is a program employing the use of a pointer to change the value of a parameter inside a function. #include <stdio.h> #include <stdlib.h> int afunc(double* dd) { *dd *= 2; } int main() { double* mm; mm = malloc(sizeof(double)); printf("value of mm after creation, unassigned: %f\n", *mm); *mm = 1.0; int j; for (j = 1; j <= 20; j++) { afunc(mm); printf("value of mm after function call %d: %f\n", j, *mm); } free(mm); return 0; } I will post tomorrow a reply illustrating the allocation of memory to a pointer within a function. This means the function must be able to modify the pointer not only its data. For that I will probably need a pointer to a pointer or use typecasting with a standard data type having the same number of bytes as a pointer. The reason for this is the fact that a pointer is a number. I found using the return value of a function makes code much more readable and probably more reliable. Multiple return values can be encapsulated inside a structure which would be returned by a function. I used this construct in simple-netaid-lightweight which avoids the use of GtkBuilder. Edward _______________________________________________ Dng mailing list Dng@lists.dyne.org https://mailinglists.dyne.org/cgi-bin/mailman/listinfo/dng