【问题标题】:Passing single pointer and double pointer to a function in c [closed]将单指针和双指针传递给c中的函数[关闭]
【发布时间】:2014-06-20 09:55:48
【问题描述】:

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

int main()
{
    int *pt;

    fun(pt);
    .
    .
}

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

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

【问题讨论】:

  • 你说它给你一个错误。它给出了什么错误?另外,您正在关注的教程对指针的指针有什么看法?
  • 你的主要错误。你的意思是int main(void)。这里没有双指针。如果您的程序有错误,请显示该程序并逐字包含错误。
  • 你能解释一下“双指针”是什么意思吗?您的意思是您希望funmain 接收该修改的方式修改指针(如果通过funs 参数完成,将是指向指针的指针)?
  • 实际上我必须将矩阵以指针的形式传递给函数。我必须使用唱指针 *ptr 和双 **ptr 矩阵。但我不知道如何传递它们的确切方法......我在其他一些内置 C 编程的软件中使用它。所以我不能告诉你这个错误。只是想知道我们如何在函数中传递矩阵,而不是使用 malloc 取消引用 tham。谢谢你的回复

标签: c function pointers malloc function-pointers


【解决方案1】:

引用语义的基本思想是函数修改一些存在于函数自身范围之外的other对象。您可以在 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
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-19
    • 2013-04-28
    • 2012-02-05
    • 1970-01-01
    • 2011-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多