‘壹’ 请教,如何把字符串常量当作函数参数传入,谢
函数的形参进入函数时,进入的只是形参的拷贝值,并不是本身。函数是在栈里开辟内存,栈是系统自己的维护的所以不需要程序员自己回收当函数结束时,这片内存被释放。
‘贰’ 存放字符串数组名作为函数参数,是否要另外增加一个整数作为函数参数,以表明字符串有效字符个数,为什么
下面是C/C++语言中的数组使用。
数组名作为函数参数的时候会“弱化”为指针,即使用的时候实际传递是的指针类型的参数。
我们知道指针类型代表着地址,它并没有指明数组元素的个数,因此编写这类函数时通常加上一个整数类型的参数,以指明数组中元素。
涉及到具体的应用,如字符串数组,也可以不用这样的整数类型参数,这样的数组可以用strlen()函数得到字符串长度(有效字符个数)。
然而对于一般的数组,是没有这样的函数可用的。
‘叁’ c语言:字符串做为函数参数传递
1、值传递
void swap(int x,int y)
{ int temp = x;
x = y;
y = temp;
}void main()
{
int a = 10, b = 20;
swap(a, b);
}
执行后,并不会交换。
2、引用传递
void swap(int &x,int &y)
{ int temp = x;
x = y;
y = temp;
}void main()
{
int a = 10, b = 20;
swap(a, b);
printf("a=%d b=%d ", a, b);
}
执行后,发生交换。
3、指针传递
void swap(int *x,int *y)
{ int temp = *x; *x = *y; *y = temp;
}void main()
{
int a = 10, b = 20;
swap(&a, &b);
printf("a=%d b=%d ", a, b);
}
执行后,发生交换。
参数传递只有上面三种,但是如果加上数组,就会产生几种新形式。
首先,明确数组型变量名本身只是该数组所占存储空间的首地址:
int a[3] = { 1, 2, 3 }; int *p = a; //等价于下行 //int *p = &a[0];
printf("%d", *p);
典型的数组做参数。
void fun(char s[]){ for (int i = 0; s[i] != '