我正在尝试在函数中传递单指针和双指针。但它给了我错误。
int main()
{
int *pt;
fun(pt);
.
.
}
fun(int *pt)
{
pt=(int*)malloc(6*sizeof(int));
.
.
}
我们使用双指针时的语法是什么。任何人都可以用一个例子来描述它,或者可以编辑上面的例子。我将非常感谢你。
答案 0 :(得分:3)
引用语义的基本思想是函数修改一些存在于函数自身范围之外的其他对象。您可以在C中实现引用语义,方法是将引用的对象的地址传递给一个带有“指向对象类型的指针”类型参数的函数。
“通过指针引用语义”的关键标志包括以下两点:
&
- 运算符)。例如:
<强>号码:强>
T x;
f(&x); // address-of
<强>被叫方:强>
void f(T * p) // take argument as pointer
{
(*p).y = 20; // dereference (via *)
p->x = 10; // dereference (via ->)
}
在您的情况下,T = int *
:
int * pt;
fun(&pt); // function call takes address
void fun(int ** p) // function takes pointer-to-object...
{
*p = malloc(173); // ...and dereferences to access pointee
}