rou*_*tic 2 c malloc pointers function
为什么不打印5
?
void writeValue(int* value) {
value = malloc(sizeof(int));
*value = 5;
}
int main(int argc, char * argv) {
int* value = NULL;
writeValue(value);
printf("value = %d\n", *value); // error trying to access 0x00000000
}
Run Code Online (Sandbox Code Playgroud)
以及如何修改它以便它仍然可以使用指针作为参数writeValue
?
你的指针(int *value
)是一个值.如果要保持上述行为,则需要指向指针的指针.
void writeValue(int** value) {
*value = malloc(sizeof(int));
**value = 5;
}
int main(int argc, char * argv) {
int *value = NULL;
writeValue(&value); // Address of the pointer value, creates int**
printf("value = %d\n", *value); // prints 5
}
Run Code Online (Sandbox Code Playgroud)