![C++新经典](https://wfqqreader-1252317822.image.myqcloud.com/cover/184/44510184/b_44510184.jpg)
上QQ阅读APP看书,第一时间看更新
9.4.2 字符串指针作为函数参数
在第7章,曾经讲过数组作为函数参数,其中讲到了数组名作为函数参数,在函数中改变数组元素值,这个被改变了的值会被带回给调用者。
在这里,将一个字符串从一个函数传递到另一个函数(字符串就看成字符数组),可以用地址传递的办法,即用字符数组名作为参数,或者用指向字符串的指针变量作为参数,这样在被调用的函数中可以改变字符串的内容,在主调函数(调用者)中可以得到被改变了的字符串。下面是一个关于字符串内容复制的演示范例,可以设置一下断点跟踪调试观察:
![](https://epubservercos.yuewen.com/F329F6/23721607801994206/epubprivate/OEBPS/Images/Figure-p183_86012.jpg?sign=1738941759-yFs4DqG9InyyXtzOYHIE7ZPOSrE5TZee-0-00961392aaf71f83fe83306adddbdb05)
![](https://epubservercos.yuewen.com/F329F6/23721607801994206/epubprivate/OEBPS/Images/Figure-p184_86013.jpg?sign=1738941759-1CuA0HKnpTlqofVTq2xTm2PMXO5aRWAg-0-85f6bd390818fe7e68548adc0b7d90c5)
在copystr函数中,形参部分换成指针变量试试,只需要修改copystr函数定义的第一行(函数名这行)。修改成如下所示:
![](https://epubservercos.yuewen.com/F329F6/23721607801994206/epubprivate/OEBPS/Images/Figure-p184_86014.jpg?sign=1738941759-1Fap7C70WcxB2GvRXaTGXZhzawsHr0wo-0-f5377061ca4fac637514a05b3bbb68fe)
当然,在copystr函数的函数体中也可以换一种写法,代码如下:
![](https://epubservercos.yuewen.com/F329F6/23721607801994206/epubprivate/OEBPS/Images/Figure-p184_86015.jpg?sign=1738941759-B5GuoBDh54nNMjRt4WSMkyg317z87ETt-0-3f31ceef2b2a0cb759fc2d66e3b94ae7)
再换一种copystr函数体的写法:
![](https://epubservercos.yuewen.com/F329F6/23721607801994206/epubprivate/OEBPS/Images/Figure-p184_86016.jpg?sign=1738941759-ATdHZYaBS8WCUlvoYHUoRHtO28ArEMih-0-e31743669bc32ed41fb1951c6de1371c)
看得出来,这种字符串内容复制有很多种写法,选择一种自己认为最熟悉、最容易理解的方法来写,初学时可能不习惯这些写法,但熟练之后,就能够慢慢掌握这些方法了,不用急,慢慢来。