我有以下代码
void fun(int * d)
{
d+=1;
}
int main()
{
int * f=malloc(5);
f[0]=0;f[1]=1;f[2]=2;f[3]=3;f[4]=4;
fun(f);
printf("value : %d\n",*f);
return 0;
}
因此,我将一个整数指针传递给函数并在那里递增它。我希望当它返回到 main 时该增量能够持续存在。 当我打印该值时,输出为“0”。但我希望输出为“1”,因为我已经增加了函数中的值。
简单地说,我的问题是,如何持久保存对指针所做的更改?
最佳答案
假设您想要增加指针,而不是值,您有两个选择:
将函数重铸为
void fun(int ** d)
,在函数体中使用(*d)+=1;
,并调用using有趣(&f);
将函数重新转换为
int* fun(int* d)
,并返回新值。
如果您想增加值,请在函数体中使用(*d)+=1;
。
您不需要将 *d
括起来:为了清楚起见,我将它们放入其中。
关于c - 如何持久化指针增量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32589773/