C-将指针作为指向另一个函数的指针进行传递



所以,我有一个函数如下:

void myfunction1(int *number)
{
    ...
}

我有:

void myfunction2(int *number)
{
    ...
    myfunction1(&number);
}

当我运行代码时,我得到错误:

warning: passing argument 1 of ‘myfunction1’ from incompatible pointer type

所以我把我的第二个功能改为:

void myfunction2(int *number)
{
    ...
    myfunction1(&(*number));
}

我得到了:

dev(887) malloc: *** error for object 0x7fd400403810: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug
Abort trap: 6

有什么想法吗?

number已经具有类型int*,因此您可以使用myfunction1(number)将其直接传递给myfunction1malloc错误与您显示的任何代码无关。

Number已经是一个指向int的指针。因此,如果您执行&number,其中Number是一个int*,那么您将传递一个指向指向int指针的指针。

void myfunction2(int *number)
{
    myfunction1(number);
}

将完成

基本上其他人说的是,这就是你应该做的:

void myfunction2(int *number)
{
    ...
    myfunction1(number);
}

在myfunction2中,number已经是一个指针,因此将其原样传递给myfunction1

相关内容

  • 没有找到相关文章

最新更新