假设我有一个指向内存的指针
0x10000000
我想添加它以便遍历内存,例如:
0x10000000 + 5 = 0x10000005
我如何在函数内执行此操作?我如何传入指针指向的地址,并在函数内部添加5,然后在函数完成后,我可以使用该值?
答案 0 :(得分:0)
您有两种选择:
该函数可以返回更新的指针。
char *f(char *ptr) {
ptr += 5;
return ptr;
}
然后来电者:
char *p = some_initialization;
p = f(p);
函数参数可以是指向指针的指针,它指向:
void f(char **ptr_ptr) {
*ptr += 5;
}
然后来电者:
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;
}