本文主要介绍C语言中指针引用的实例分析,非常详细,具有一定的参考价值。感兴趣的朋友一定要看完!
指针和引用在形式上有很大的不同,但它们似乎都有相同的功能,它们可以直接引用对象并直接操作它们。
首先,引用不能为空,但是指针可以为空。如前所述,引用是对象的别名。如果引用为空,则——对象不存在。怎么会有化名?因此,在定义引用时,必须对其进行初始化。所以如果你有一个指向另一个对象的变量,但是它可能是空的,那么你应该使用一个指针;如果变量总是指向一个对象,即您的设计不允许变量为空,那么您应该使用引用。
像指针一样,指针的引用令人困惑。
我们注意到如下语法
voidfunc(int*x)
{
x;
}我猜你可能对int *x x有点困惑。
它叫指针的引用.
Int*x不要觉得看起来复杂,其实一点都不复杂。
让我打开让你看看:
根据C程序员的习惯,指针“*”符号与类型放在一起。
c是一个参考符号。
我们应该注意到“引用”并不产生副本,而是给原始变量一个别名。
对引用的操作是对原始变量的操作。
所以就这样:
Int*x一目了然!
对指针变量本身的修改无法作用到原指针变量,
所以需要通过引用来实现修改指针变量。
我将使用两个图表来告诉您指针引用为什么有用:
00-1010拿个栗子。
我将使用代码向您解释什么是本地修改:
# includestdio.h
voidswap(int*p1,int * p2){ 0
int * temp=p1
p1=p2
p2=温度;
Printf('交换条件:a=%d,b=%d\n ',*p1,* p2);
Printf ('in exchange(地址):p1=%d\n ',P1);
Printf('交换(地址):p2=%d\n ',p2);
}
int main(){ 0
inta=1,b=3;
int*p1=a,* p2=b;
//交换之前
Printf('交换前:a=%d,b=%d\n ',*p1,* p2);
Printf('交换前(地址):p1=%d\n ',P1);
Printf('交换前(地址):p2=%d\n ',p2);
//作为交换
交换(p1,p2);
//交换之后
Printf('交换后:a=%d,b=%d\n ',*p1,* p2);
Printf('交换后(地址):p1=%d\n ',P1);
Printf('交换后(地址):p2=%d\n ',p2);
返回0;
}猜猜结果。
输出结果:
之前:a=1,b=3
交换前(地址):p1=6422028
交换前(地址):p2=6422024
作为交换:a=3,b=1
交换(地址):p1=6422024
交换(地址):p2=6422028
交换后:a=1,b=3
交换后(地址):p1=6422028
交换后(地址):p2=6422024
运行截图
执行swap()函数时,它正在执行。
可以发现,在执行swap()函数时,确实修改了地址,交换了A和B的值。
然而,当我们在main()函数中输出A和B时,根本没有交换。
什么叫局部修改?
同样的代码,我只换一个地方。
让我们看看会发生什么。
运行截图
之前:a=1,b=3
交换前(地址):p1=6422044
交换前(地址):p2=6422040
交换:a=3,b=1
交换(地址):p1=6422040
交换(地址):p2=6422044
交换后:a=3,b=1
交换后(地址):p1=6422040
交换后(地址):p2=6422044
我简单的加了一句“”,太神奇了!
所以我们可以发现:
指针的引用能够全局修改指针变量!
引用是C++中很强大的语法,在编程中极其实用。
理解这种语法至关重要,因为它广泛用于树和图算法。
以上就是《C语言指针引用实例分析》一文的全部内容,感谢阅读!希望分享的内容对大家有所帮助。更多相关知识,请关注行业资讯频道!
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/82730.html