在C语言中,因为字符串被看做是字符数组,因此传递字符串给函数的规则非常类似于传递数组给函数。
基本规则如下:
(1) 要传递字符串,必须将字符串变量声明为函数的形参。例如:
void display(char item_name[])
{
......
}
(2) 函数原型必须能表示参数是字符串。对于上面的函数定义,其原因可以写作:
void display(char str[]);
(3) 函数调用必须带一个无下标的字符串数组名作为其实参。例如:
display(name);
其中,name是在调用函数中已正确声明的字符串数组。
必须注意,在C语言中,与数组一样,字符串不能按值传递给函数。
按值传递与指针传递
把数据从一个函数传递给另一个函数的技术称为参数传递。参数传递可以用以下两种方法来完成:按值传递和指针传递。
在按值传递中,实参的值被复制给调用函数实参列表的变量。被调用函数使用的是实参的副本,而不是其原始值。这就确保调用函数的原始值不会被随意修改。在指针传递中,发送给被调用函数的是变量的地址,而不是值的副本。在这种情况下,被调用函数是直接作用于调用函数的数据的,因此,调用函数可以使用已修改的值。
在操作数组和字符串时,经常使用指针调用。当需要被调用函数返回多个值时,也使用该方法。