How to work with pointer to pointer to structure in C?

I want to change member of structure under double pointer. Do you know how?

Example code

typedef struct { int member; } Ttype; void changeMember(Ttype **foo) { //I don`t know how to do it //maybe *foo->member = 1; } 

4 Answers

Try

(*foo)->member = 1; 

You need to explicitly use the * first. Otherwise it's an attempt to dereference member.

3

Due to operator precedence, you need to put parentheses around this:

(*foo)->member = 1; 

You can use a temp variable to improve readability. For example:

Ttype *temp = *foo; temp->member = 1; 

If you have control of this and allowed to use C++, the better way is to use reference. For example:

void changeMember(Ttype *&foo) { foo->member = 1; } 

maybe (*foo)->member = 1 (if it's dynamically allocated)

1

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

You Might Also Like