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

Categories

0 votes
939 views
in Technique[技术] by (71.8m points)

c - Pointer manipulation inside function

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

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

1 Answer

0 votes
by (71.8m points)

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...