【发布时间】: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 只是传值,这意味着调用中的值被复制到函数的局部参数变量中。 -
我明白了。谢谢大家的见解!