函数内部的指针操作

时间:2015-10-06 21:15:59

标签: c pointers

假设我有一个指向内存的指针

0x10000000

我想添加它以便遍历内存,例如:

0x10000000 + 5 = 0x10000005

我如何在函数内执行此操作?我如何传入指针指向的地址,并在函数内部添加5,然后在函数完成后,我可以使用该值?

2 个答案:

答案 0 :(得分:0)

您有两种选择:

  1. 该函数可以返回更新的指针。

    char *f(char *ptr) {
        ptr += 5;
        return ptr;
    }
    
  2. 然后来电者:

        char *p = some_initialization;
        p = f(p);
    
    1. 函数参数可以是指向指针的指针,它指向:

      void f(char **ptr_ptr) {
          *ptr += 5;
      }
      
    2. 然后来电者:

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

答案 1 :(得分:0)

基本上,就像所有其他人所说的那样,你必须通过引用传递指针(这是指向一个指针,也就是双指针)到函数。

#include<stdio.h>

void IncrementAddress(void **addr)
{
   int offset=5;//give what ever value you want

   *addr = *addr + offset;
    printf("%d\n",*addr);
}  

int main()
{
  char x;// or any other data type like int x or float x etc.
  void *ptr=NULL;
  ptr = &x;

  printf("%d\n",ptr);
  IncrementAddress(&ptr);
  printf("%d\n",ptr);

  return 0;
}