2013-07-28 107 views
0

所以,我有一个功能类似如下:Ç - 传递一个指针的指针到另一个功能

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 

任何想法?

+2

只是'myfunction1(数);' – BLUEPIXY

回答

2

number已经键入int*这样你就可以直接myfunction1(number)把它传递给myfunction1malloc错误与您显示的任何代码无关。

2

数字已经是指向int的指针。因此,如果你做&number其中number是一个int*你传递一个指针指向int的指针。

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

会做的伎俩

0

基本上是别人说的是,这是你应该做的:

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

内myfunction2,数量已经是一个指针,所以传递,因为它是myfunction1