9.4.2 字符串指针作为函数参数
在第7章,曾经讲过数组作为函数参数,其中讲到了数组名作为函数参数,在函数中改变数组元素值,这个被改变了的值会被带回给调用者。
在这里,将一个字符串从一个函数传递到另一个函数(字符串就看成字符数组),可以用地址传递的办法,即用字符数组名作为参数,或者用指向字符串的指针变量作为参数,这样在被调用的函数中可以改变字符串的内容,在主调函数(调用者)中可以得到被改变了的字符串。下面是一个关于字符串内容复制的演示范例,可以设置一下断点跟踪调试观察:


在copystr函数中,形参部分换成指针变量试试,只需要修改copystr函数定义的第一行(函数名这行)。修改成如下所示:

当然,在copystr函数的函数体中也可以换一种写法,代码如下:

再换一种copystr函数体的写法:

看得出来,这种字符串内容复制有很多种写法,选择一种自己认为最熟悉、最容易理解的方法来写,初学时可能不习惯这些写法,但熟练之后,就能够慢慢掌握这些方法了,不用急,慢慢来。