C和指针 四

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;
}





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值