二级指针是什么,什么时候用到二级指针。这估计是大家都想知道的。。。
最近一直在看hlfs的源代码,有什么对二级指针的一个应用。可是总不是很懂这个东西。。今天就好好的说下。。
当你想对一个地址做修改的时候,就要用到二级指针。。
下面是一个例子:
void buf ( int **a )
{
( *a) = ( int* )malloc ( sizeof ( int ) );
( **a )= 1;
printf ( "%d",**a );
}
int main( int argc, char *argv[] )
{
int *a;
buf ( &a );
//printf ( "%d",*a );
}
当你要给*a赋值的时候,发现他是一个指针,没有内存空间来存储值,不能直接给他赋值,要给他先创建一个内存空间。当然你可以直接的malloc ()在主函数里。。这个就不说了。。
但是,如果你想要在调用一个函数实现呢:
你可以这样想,如果我有一个东西,能接受我的这个指针的地址,这样就可以在调用的函数里面通过他的地址,就可以在调用的函数里面,进行malloc (),而这个能存储地址的就是二级指针。。
二级指针就是用在当你要修改一个地址的时候。。这个东西就登场了。。
顺便说下,没有内存空间的指针是不能赋值的。。。这一点是最重要的,希望大家不要犯错啊。。
阅读(779) | 评论(0) | 转发(0) |