+ 1
Why my code doesn't work...
//I don't understand why my compiler (Code::Blocks) gives me a warning when I execute the following code: #include <stdio.h> void *square(const void *num); int main() { int a = 5; int result; result = square(&a); printf("%d squared is %d", a, result); return 0; } void *square(const void *num) { int r; r = (*(int*)num)*(*(int*)num); return r; } //Can anybody explain why? When I change from return r; to return (int*)r; in the 'square' function and from square(&a) to (int)square(&a) in the 'main' function, it works. Also, should I declare the variable 'r' in the 'square' function to be static because it is being passed out of the function (local variable)? Thanks.
1 ответ
+ 1
When you said I implicitly converting from pointer to int, and vice versa. Do you mean the variable 'r' in the 'square' function? If so, I need to typecast the variable 'r' to be return (int*)r so the function will know I'm returning an integer value? Also, when we type casting the void pointer why do we put an asterisk inside the bracket? I'm really confusing...