新网创想网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
在C语言中,用数组名作为函数调用时的实参,实际上传递给形参的是首地址。
站在用户的角度思考问题,与客户深入沟通,找到日照网站设计与日照网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都做网站、成都网站制作、企业官网、英文网站、手机端网站、网站推广、国际域名空间、虚拟主机、企业邮箱。业务覆盖日照地区。
因为数组名传递的是数组的地址也就是第一个元素的地址。例如:
a[3]这个数组,3指个数,a[0]指第一个元素,全部元素指a[0]~a[2];那数组名a规定的就是首地址。
扩展资料
C语言中函数参数传递的三种方式:
1、传值,就是把你的变量的值传递给函数的形式参数,实际就是用变量的值来新生成一个形式参数,因而在函数里对形参的改变不会影响到函数外的变量的值。
2、传地址,就是传变量的地址赋给函数里形式参数的指针,使指针指向真实的变量的地址,因为对指针所指地址的内容的改变能反映到函数外,也就是能改变函数外的变量的值。
3、传引用,实际是通过指针来实现的,能达到使用的效果如传址,可是使用方式如传值。说几点建议:如果传值的话,会生成新的对象,花费时间和空间,而在退出函数的时候,又会销毁该对象,花费时间和空间。
一维数组的元素作为函数实参,与同类型的简单变量作为实参一样,是单向的值传递,即数组元素的值传给形参,从而形参是改变不影响实参
数组名代表着整个数组的地址,如果一维数组的名字作为函数实参,传递的是整个数组,即形参数组和实参数组完全相同,是存放在同一存储空间的同一个数组。这样形参数组
修改时,实参数组也同时被修改了。形参数组的元素个数可以省略。
#includestdio.h
//数组作为函数参数,可以省略元素个数
//数组作为函数参数,传递是整个数组的地址,修改了函数形参数组元素的值,会影响到外面的实参数组
void change(int array[])
{
printf("array ==%p\n",array);
array[0] = 100;
}
int main()
{
int ages[6] = {10,11,13,15,11,18};
printf("array ==%p\n",ages);
change(ages);
printf("%d\n",ages[0]);
return 0;
}
输出结果为: array ==0x7fff5be26c00
array ==0x7fff5be26c00
100
这里的 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.安效率来算后者较可观。时间复杂度较低。
例如:你自己定义一个函数
int
max(int
a,int
b){...
}
在这里a,b就是形参,接下来你会调用max函数,如:
void
main()
{
int
c,int
d;
.....
max(c,d);
}
这里c
d就是实参
所谓形参就是在函数定义体中的参数
所谓实参就是在调用函数时实际传进函数的参数