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

时间:2013-07-28 20:48:30

标签: c pointers malloc

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

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

有什么想法吗?

3 个答案:

答案 0 :(得分:2)

Number已经是指向int的指针。因此,如果您执行&number,其中number是int*,则表示您正在传递指向int的指针。

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

会做的伎俩

答案 1 :(得分:2)

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

答案 2 :(得分:0)

基本上其他人说的是你应该做的事情:

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

在myfunction2中,number已经是一个指针,所以将它传递给myfunction1