我一直在试图在被调用的函数中创建一个指针变量,并以某种方式将它指向的值传递给主函数。我写了几个示例程序,但它似乎仍然错过了一些东西。而挑战在于使用指向指针的指针来实现这一点。这是我编写和测试的代码。我想我错过了一些明显的东西,你们可以指点一下吗?谢谢。功能和指针指针
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