Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

Let's say I have a pointer pointing to memory

0x10000000

I want to add to it so it traverses down memory, for example:

0x10000000 + 5 = 0x10000005

How would I do this inside a function? How would I pass in the address that the pointer points to, and inside the function add 5 to it, then after the function's complete, I can use that value?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
945 views
Welcome To Ask or Share your Answers For Others

1 Answer

You have two options:

  1. The function can return the updated pointer.

    char *f(char *ptr) {
        ptr += 5;
        return ptr;
    }
    

The caller then does:

    char *p = some_initialization;
    p = f(p);
  1. The function argument can be a pointer to a pointer, which it indirects through:

    void f(char **ptr_ptr) {
        *ptr += 5;
    }
    

The caller then does:

    char *p = some_initialization;
    f(&p);

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...