2013-07-28 122 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