描述:
为什么使用指针的指针?
而不直接使用指针呢?
解决方案1:
lovessm(Jensy) | (不知道自己帅不帅) 讲得很明了
解决方案2: 楼上说的是个什么呀……
说的都晕了
如果用一级指针来传递的话,因为指针本身,记住是本身,是按值传递的,所以函数执行完后,指针的本身,其实是没有变化的。
而如果用二级指针(即楼主说的,指针的指针),同样,二级指针本身是按值传递的,而我们真正的有效数据,指向二级指针的一级指针的本身的内容是按址传递的,如果你在函数中对它进行了操作,比如你分配了内存,并把内存地址赋给它,当函数结束后,这个一级指针还是执行它。当然那个二级指针由于前面说的,它是按值传递的,所以它又变回原来的值了。
用这种二级指针(指向指针的指针)很大的一个应用就是上面说的,由函数内部来分配内存,外面来用。如COM里面的接口指针,外面只声明了一个接口指针,并没有分配任何内存,为什么后来就可以用了呢?因为它在函数里面得到了内存,即得到了实际的内容。
我的理解是: 例如:(int **first)
你有一个指向第一个数据的指针(int *first1)。 (这时 first指向first1)
还有个指针是(int *first2),开始你用first1来表示指针指向的数据为第一个数据。
但是,当你想改变,要用first2指向的数据为第一个数据时,
(这时改为,first指向first2)
因为指针的指针可以改变指针本身啊
解决方案5:因为指针的指针可以改变指针指向的内容