I have a code where I use a pointer
One of the functions is in file 1
In the main file I call the function of file 1
When I pass the pointer it is not being defined,
I get Test is NULL message
What is the correct way for me to use this?
my code:
File 1
struct mystruct {
unsigned short id;
int number;
....
}
struct mystruct *test_check(state *ck, char *name);
void GetMytest(state *ck, char *name, struct mystruct *test) {
checkfield(ck, name);
test = test_check(ck, name);
.....
}
Main file
struct mystruct *test
void MainTest() {
state *ck = check_new();
.....
GetMytest(ck, "Stats", test);
if(test == NULL)
printf("Test is NULL");
}
CodePudding user response:
The statement test = test_check(ck, name);
in GetMytest
only modifies the local argument variable test
, not the global variable by the same name.
If you want to update the pointer in the calling scope (the MainTest
function or the global scope), you must pass a pointer to this variable.
I do something similar in some of my code
Try as follows
File 1:
void GetMytest(state *ck, char *name, struct mystruct **test) {
checkfield(ck, name);
*test = test_check(ck, name);
.....
}
Main function:
void MainTest() {
state *ck = check_new();
.....
GetMytest(ck, "Stats", &test);
if (test == NULL)
printf("Test is NULL");
}
If the other functions are correct this should solve the problem.