c语言数组作为函数实参 函数使用数组作为实参

C语言中,数组名作为函数调用的实参时,下面叙述正确的是()。

正确的

为普陀等地区用户提供了全套网页设计制作服务,及普陀网站建设行业解决方案。主营业务为网站设计制作、成都网站设计、普陀网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!

B

例如:

f(int data[]);

f(int *data);

其实是等价的,都是一个指针传递。上面两种无论那种都可以传递一个数组名,作为实参。

实参传递给的数组名,就是数组的首地址。

因此通过数组名,传递其实就是把数组的首地址给了形参,因此通过地址就可以改变实参数组相应的值。

C语言中数组名作为实参传给被调用的函数时,形参获得的是什么

C语言中数组名作为实参传给被调用的函数时,形参获得的是数组的起始地址。

还是用例子说话吧。

#includestdio.h

int *arry(int *a)

{

int *b;

b = a;

int i;

for(i=0;i5;i++)

{

printf("%d",a[i]);

} return b;

}

int main()

{

int a[5] = {1,2,3,4,5};

int *c;

int i;

c = arry(a);

for(i=0;i5;i++)

{

printf("%d",c[i]);

}

}

主要是通过指针把数组,例如main里面的a的地址传入arry函数,然后在arry函数中用一个兼容类型的指针接收地址,然后就可以再这个指针下的地址操作地址上面的数据了。

arry返回的时候也是返回一个指针(地址)。

C语言数组元素作函数实参

这里的  if(max(m,a[i])m)  规范写法后面那个分号应该去掉的

这个程序求的是输入的是个int类型数字的最大值,m = a[0]是把第一个数的值赋给变量m,然后拿第二个跟它对比,if(max(m,a[i])m)这句里面的max(m,a[i])是对比m与它的下一个数的大小,max(m,a[i])m则是把调用函数返回的值跟原来的m作比较,如果符合max(m,a[i])m的条件,m = max(m,a[i])就把调用函数返回的值赋给m,n = i   “i”是当前最大的那个数的在数组中的位置。

只是大于零是不行的,因为这里要求最大的那个数,你输入的数字肯定全部大于或等于零的,如果改成if(max(m,a[i])0)是一个接着一个作比较,n = i要执行10次,也是可以得到正确答案,但是这会增大系统开销;如果是if(max(m,a[i])m)这样,那么最大的数在第几位,n = i就执行多少次,总的执行次数小于等于10.安效率来算后者较可观。时间复杂度较低。

在C语言中,用数组名作为函数调用时的实参,实际上传递给形参的是____________。

在C语言中,用数组名作为函数调用时的实参,实际上传递给形参的是首地址。

因为数组名传递的是数组的地址也就是第一个元素的地址。例如:

a[3]这个数组,3指个数,a[0]指第一个元素,全部元素指a[0]~a[2];那数组名a规定的就是首地址。

扩展资料

C语言中函数参数传递的三种方式:

1、传值,就是把你的变量的值传递给函数的形式参数,实际就是用变量的值来新生成一个形式参数,因而在函数里对形参的改变不会影响到函数外的变量的值。

2、传地址,就是传变量的地址赋给函数里形式参数的指针,使指针指向真实的变量的地址,因为对指针所指地址的内容的改变能反映到函数外,也就是能改变函数外的变量的值。

3、传引用,实际是通过指针来实现的,能达到使用的效果如传址,可是使用方式如传值。说几点建议:如果传值的话,会生成新的对象,花费时间和空间,而在退出函数的时候,又会销毁该对象,花费时间和空间。


网站标题:c语言数组作为函数实参 函数使用数组作为实参
网站链接:http://csdahua.cn/article/hipioc.html
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流