To make it work rewrite the code as follows –
#include <stdio.h> int change(int * b){ * b = 4; return 0; } int main(){ int b = 6; //variable type of b is 'int' not 'int *' change(&b);//Instead of b the address of b is passed printf("%d", b); return 0; }
The code above will work.
In C, when you wish to change the value of a variable in a function, you “pass the Variable into the function by Reference“. You can read more about this here – Pass by Reference
Now the error means that you are trying to store an integer into a variable that is a pointer, without typecasting. You can make this error go away by changing that line as follows (But the program won’t work because the logic will still be wrong )
int * b = (int *)6; //This is typecasting int into type (int *)