This function needs to be passed a pointer to a pointer.
void get_name(person** p) {
puts(p->name); // this is probably wrong
}
This is how I call the function (I'm not sure about this either):
int main() {
...
get_name(&person); // is this wrong?
...
return 0;
}
Person is obviously a struct with a name property which is a string.
How do you refer to the value *p points to from **p?
x->y
is just a shortcut for (*x).y
. *
performs indirection (that is, it gives you the thing pointed to by the pointer), so you need to perform indirection twice to get the thing pointed to the pointer that is pointed to by the pointer:
(**p).name
(*p)->name
If person
is the name of a typedefed struct, then get_name(&person)
is not correct; you need an instance of that struct and you need a pointer to that instance that you can pass to the function:
int main() {
person p;
person* pp = &p;
get_name(&pp);
}
However, it's not exactly clear why get_name
needs to take a person**
; presumably a person*
would be sufficient.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With