1. C语言很特别哈, 在K&R中,形式参数的类型以单独的列表进行声明,并出现在参数列表和函数体的左花括号之间:
int * find_int (key, array,array_len)
int key;
int array[];
int array_len;
{}
2. 函数的参数是通过传值得方式进行的传递的, 它是集传递的是实参的一份copy。因此,函数可以修改它的形参(也就是实参的拷贝)。而不会修改调用程序
实际传递的参数。数组名也是通过传值方式传递的,但是它传给函数的是一个指向该函数的指针copy。在函数中,如果在数组形参中使用了下标引用操作,
就会引发间接访问操作,它实际所访问的是调用程序的数组元素。
void swap(int *x , int *y)
{
int temp;
temp =*x;
*x=*y;
*y=temp;
}
3. 在声明数组参数时,不指定它的长度是合法的。因为函数并不当数组元素分配内存,间接访问操作将访问调用程序中的数组元素。函数并没有办法判断数组参数
的长度,所以函数如果需要这个值。必须作为参数显示地传递给函数。
在函数中, sizeof也无法获得数组长度,只能获得数据类型。(注意此处仅仅是对数组而言。对于结构体那就另当别论了。)
4. 可变参数列表
#include<stdarg.h>
float average(int v, ...)
{
va_list var;
int count ;
float sum=0;
va_start(var,v);
for(count =0 ;count < v;count++)
{
sum += va_arg(var,int);
}
va_end(var);
return sum/v;
}