一维数组和指针变量做函数参数

一维数组做函数参数

可以用数组元素做函数参数,还可以用数组名做函数参数(包括实参和形参)

用数组元素做实参时,向形参变量传递的是数组元素的值,而用数组名做函数实参时,向形参(数组名或指针变量)传递的是数组首元素的地址。

  1. 用数组名作函数参数,应该在主调函数和被调用函数分别定义数组。
  2. 用数组名作函数参数,形参数组可以不指定大小,在定义数组时在数组名后面跟一个空的方括号,如float average(float array[])
  3. 实参数组和形参数组类型应该一致,如不一致,结果将出错。
  4. 当用数组名作参数时,如果形参数组中各元素的值发生了变化,实参数组元素的值随之发生改变。
int main()
{
    float average(float array[10]);//float average(float array[]);
    float score[10],aver;
    aver=average(score);
}

float average(float array[10])//float average(float array[])
{
    
}

上面定义的average函数指定的形参数组的大小10是不起作用的,因为编译系统并不检查形参数组的大小,只是将实参数组的首元素的地址传给形参数组名。数组名代表数组的首元素的地址,因此认为,形参数组首元素(array[0])和实参数组首元素(score[0]具有同一地址,他们共占用同一存储单元,score[n]和array[n]指的是同一单元。score[n]和array[n]具有相同的值。

指针变量做函数参数

函数的参数为指针类型时,他的作用是将一个变量的地址传送到另一个函数中。

  1. C语言中实参变量和形参变量之间的数据传递是单向的“值传递”方式。因为传递的值是地址,所以要求形参为指针变量。
  2. 不可能通过调用函数来改变实参指针变量的值,但是可以改变(而且只可以)改变指针变量所指变量的值
  3. 用指针变量做函数参数时,在函数执行过程中使指针变量所指向的变量值发生变化,在函数调用结束后,这些变量值的变化依然保留下来,这样就实现了“通过调用函数使变量的值发生变化,在主调函数(如main函数)中可以使用这些改变了的值”
  4. 实参数组名代表一个固定的地址,但形参数组名并不是一个固定的地址,而是按指针变量处理。
int a[10],*p;
p=a;
在使用时,要避免使用a++,否则会导致出现错误。可以用`p++`,`a+i`,`&a[i]`代替
  1. 指针变量引用时一定要指向一个内存单元
int main()
{
    float average(float array[10]);//float average(float array[]);
    float score[10],aver;
    float *p;
    p=score;  //指针变量一定要初始化(指向一个内存单元)否则会导致出错
    aver=average(p);
}

float average(float *x)
{
    
}

上面这句话解释:如果用指针变量作实参,必须先使指针变量有确定值,指向一个已定义的对象。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值