我一直在試圖在被調用的函數中創建一個指針變量,並以某種方式將它指向的值傳遞給主函數。我寫了幾個示例程序,但它似乎仍然錯過了一些東西。而挑戰在於使用指向指針的指針來實現這一點。這是我編寫和測試的代碼。我想我錯過了一些明顯的東西,你們可以指點一下嗎?謝謝。功能和指針指針
int one(int ***ptr)
{
static int *p,**pp,b=10;
p=&b;
pp=&p;
ptr=&pp;
printf("b:%d\tp:%d\tpp:%d\n",b,*p,**pp);
printf("Sub Ptr:%d\n",***ptr);
printf("Address of ***ptr:%d\n",&ptr);
return 32;
}
int main(int argc, char *argv[])
{
static int ***ptr;
int a=200,*b,**c;
b=&a;
c=&b;
ptr=&c;
printf("Main Ptr:%d\n",&ptr);
a=one(ptr);
printf("Main Ptr:%d\n",&ptr);
printf("Main Ptr:%d\n",***ptr);
system("PAUSE");
return 0;
}
我得到了32的輸出,它是函數的返回值。是否有可能獲得被調用函數中指向的值10。
我也嘗試過全局聲明,但是din工作也是。我想維護本地聲明,看看它是否可能...
錯字:在你的例子中必須是「int * ptr =&x」(不是&a);) – zerm 2010-10-16 11:06:15
感謝指針,我錯過了2個東西,一個是解引用和堆。 – Gan 2010-10-16 11:07:56
@zerm:更正了,謝謝。 – 2010-10-16 11:08:06