下面小编就带大家深入了解一下C指针的指针以及指针的引用。我觉得边肖挺好的,现在就分享给你,给你一个参考。让我们跟随边肖去看一看。
展示如何利用指针的指针和指针的引用来修改传递给方法的指针,以便更好地利用它。(这里说的指针的指针不是二维数组)
为什么需要使用它们
当我们将一个指针作为参数传递给一个方法时,我们实际上传递了该指针的一个副本给该方法。也可以说,传递指针就是指针的值传递。
如果我们修改方法内部的指针,就会出现问题。方法中的修改只是修改后指针的副本,而不是指针本身,原指针仍然保持原来的样子。
的价值。让我们用下面的代码来解释这个问题:
int m _ value=1;
void func(int *p)
{
p=m _ value
}
int main(int argc,char *argv[])
{
int n=2;
int * pn=n;
cout * pn endl
func(pn);
cout * pn endl
返回0;
}
看看输出结果。
输出是两个2。
使用指针的指针
使用指针作为参数显示指针。
void func(int **p)
{
* p=m _ value
//也可以根据需要分配内存
* p=new int
* * p=5;
}
int main(int argc,char *argv[])
{
int n=2;
int * pn=n;
cout * pn endl
func(pn);
cout * pn endl
返回0;
}
我们看一下 func(int **p)这个方法
p:是指针对指针。这里就不修改了,不然会丢失这个指针所指向的指针地址。
* P:是指向的指针,是地址。如果我们修改它,我们就修改了指针的内容。换句话说,我们在main()方法中修改*pn指针。
* * * p:两个解引用引用main()方法中*pn的内容。
指针的引用
再看一下指针的引用代码。
int m _ value=1;
void func(int *p)
{
p=m _ value
//也可以根据需要分配内存
p=new int
* p=5;
}
int main(int argc,char *argv[])
{
int n=2;
int * pn=n;
cout * pn endl
func(pn);
cout * pn endl
返回0;
}
看一下func(int *p)方法
?p:是main()方法中指针*pn的引用。
?*p:是pn在main()方法中指向的内容。
以上对C指针的指针和指针的深入理解,就是边肖分享的全部内容。希望给大家一个参考,多多支持我们。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。