将单指针和双指针传递给c中的函数

时间:2014-05-03 20:56:55

标签: c function pointers malloc function-pointers

我正在尝试在函数中传递单指针双指针。但它给了我错误。

int main()
{
    int *pt;

    fun(pt);
    .
    .
}

fun(int *pt)
{
    pt=(int*)malloc(6*sizeof(int));
    .
    .
}

我们使用双指针时的语法是什么。任何人都可以用一个例子来描述它,或者可以编辑上面的例子。我将非常感谢你。

1 个答案:

答案 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
}