【问题标题】:Modify the address of a one star pointer passed to a void function修改传递给 void 函数的一星指针的地址
【发布时间】:2022-01-04 17:11:45
【问题描述】:

我正在试验,想知道是否可以将作为参数传递的单指针的地址更改为void函数。

我已经知道,我可以只使用一个指向指针的指针,然后更改指针的地址或将函数类型更改为void (*)。但是是否可以通过func_p() 函数中的某种强制转换来做到这一点?

int num = 2;

void func_p(int *ptr)
{
    ptr = # /* this will not work */
}

void func_pp(int **ptr)
{
    *ptr = # /* this will work */
}

int *func_ret(int *ptr)
{
    return # /* this will work too */
}

提前致谢。

【问题讨论】:

  • 你不能改变指针的地址,但你可以改变它的值。
  • @WilliamPursell 是的,我只是希望它指向一个不同的变量。
  • 简而言之,没有。可以修改传递给函数的指针的副本,但不能修改原始的。
  • 您对func_pp 所做的是模拟通过引用传递。 C 只是传值,这意味着调用中的值被复制到函数的局部参数变量中。
  • 我明白了。谢谢大家的见解!

标签: c pointers casting


【解决方案1】:

当您将变量传递给函数时,实际上会发送变量的副本,并且如果您在函数中更改该变量的值,则变量的值不会在函数之外更改。您可以搜索“按引用调用”和“按值调用”了解更多详情。

【讨论】:

  • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
猜你喜欢
  • 1970-01-01
  • 2020-01-09
  • 1970-01-01
  • 2013-06-25
  • 1970-01-01
  • 2018-08-25
  • 2020-01-25
  • 2014-03-01
  • 2020-12-29
相关资源
最近更新 更多