18

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 4

33

Try

(*foo)->member = 1;

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

Sign up to request clarification or add additional context in comments.

3 Comments

A doubt example: if the changeMember() funtion is created in a class library and I need to access this in my console app ,how it should be done?? : @Jonathan Leffler
@TechBrkTru: Given that this is C, I'm not sure what you mean by a 'class library'. However, if you mean 'library', then you simply make sure you've got a header with the necessary function declarations in use in the code that needs to call changeMember(), and you link the executable with the library that contains the function. That's all completely routine. If you mean something else, you should probably ask your own new question so you can explain properly.
@JaredPar Why would we need a pointer to structure pointer to be able to change the member of the structure (is not a pointer enough to do that ?)
10

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

(*foo)->member = 1;

Comments

3

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;
}

Comments

1

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

1 Comment

No maybe - but dynamic allocation is immaterial.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.