今天学习指针做为函数参数的使用,说来惭愧,我工作两年了也报过培训班,但一直没有学好,只算入门,现在就相当于从头学习,努力把自己的编程水平提高,一起加油吧!
ok,进入主题。
函数的参数不仅可以是整型、实型、字符型等数据,还可以是指针类型。它的作用是将一个变量的地址传到另一个函数中,如下图所示:
输入结果为
我定义了一个无返回值的、有两个指针变量的参数函数swap
其中把*a的值赋给了局部变量temp;把*b的值赋给了*a;又把temp的值赋给了*b
这就是整个swap函数的作用。
然后在main函数中定义了整形变量a,b.整形指针变量pointer_1,pointer_2;
使用scanf函数输入a和b的值
然后用pointer_1去取a的地址;
pointer_2去取b的地址
当输入的a的值小于b时调用swap函数
然后打印a,b的值
其中printf()中的两个\n\n是换行的意思,为了看着方便
比如我输入了11,12。回车换行的时候就从第三行显示了,然后第四行也不显示了
假如变成以下形式
则输出效果为
再少一个\n就变成这样啦哈哈哈。神奇吧嘿嘿
好的,现在让我们回到主题。
我定义了一个函数。它的作用是交换两个变量(a和b)的值。swap函数的形参a,b是指针变量。
程序运行时,先执行main函数,输入a和b的值。然后将a和b的地址分别赋给指针变量pointer_1和pointer_2,使指针变量pointer_1指向局部变量a,指针变量pointer_2指向局部变量b,
接着执行if语句,由于a<b,因此执行swap函数。注意实参pointer_1和pointer_2是指针变量,在函数调用的时候,将实参变量的值传递给形参变量。采取的依然是“值传递”方式。因此虚实结合后形参a的值为&a,b的值为&b。这时a和pointer_1指向变量a,b和pointer_2指向变量b。
接着执行swap函数的函数体使*a和*b的值互换,也就是使a和b的值互换。
函数执行完后,a,b将不复存在(已释放)
最后在main函数中输出的a和b的值是已经交换过的值。
这就是最近两天我学习的指针内容啦!如果有不对的地方欢迎批评指正,让我们一起共同学习,勇敢面对生活和工作中遇到的困难和挑战!
最后可以的话可以给我点赞鼓励,这样会对我继续分享学习工作遇到的问题产生强大的动力,谢谢!