使用二级指针是为了函数调用结束后可以使作为函数实参的指针的值的改变保留下来, 楼主问这样的问题,应该是对指针的理解不够透彻。 指针是一种变量类型,自身在32位操作系统中的大小是4个字节,因为32位CPU的地址总线位宽是32位,指针的值是内存地址,我们知道,一个函数如果参数是值传递,那么传入函数体的是一份实参的拷贝,实际并不作用于该实参变量,而指针也是一样的,传入函数体的也是一份指针拷贝,这份拷贝指向于和原指针相同的地址,修改这份拷贝的值,也就是它的地址将毫无意义,只有修改其指向的内容才会实际作用到指向物。现在已经接近你的问题了,如果要使用函数使指针参数的值改变,也就是让它的指向改变,其方法就是使该指针成为二级指针,二级指针的内容是一个指针值,这样做改变就可以实际作用到指针指向。 GetNode(int position, LNode **node) { ... *node = pTemp; ... } 从你的这个函数中看,node的指向是需要改变的,而且要求在函数运行结束后任然保持这个指向。 就是这个意思了。 |
|