C语言中,数组名作为函数参数,属于啥传递,为啥?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言中,数组名作为函数参数,属于啥传递,为啥?相关的知识,希望对你有一定的参考价值。
C语言中,数组名作为函数参数,属于数组参数传递。在VB6.0中,允许使用数组作为实参传递到子过程的形参中,数组传递必须采用地址传递的方式来传递参数。
数组型变量名本身只是该数组所占存储空间的首地址,函数调用时,系统不会为形参分配数组存储空间,而是仅仅分配一个存放数组地址(第一个元素地址)的存储空间,此后,将实参数组的首地址传递给形参变量。
扩展资料:
数组参数在传递时应注意以下两个方面:
1、 在实参和形参列表中只写数组名,忽略维数的定义,但圆括号不能省,当数组作为参数传递时,系统将实参数组的起始地址传给过程,使形参数组也具有与实参数组相同的起始地址,若参数是多维数组,每维以逗号分隔。
2、被调过程可分别通过Lbound和Ubound函数确定实参数组的下界和上界。
参考资料来源:百度百科-参数传递
参考技术A 属于地址传递,在函数里修改的话,将直接影响调用方的数值。这是因为数组名代表这个数组的首地址,不过是静态不可更改的而已。在函数里用引用[i]下标时,就是找到这个数组第i号元素的地址进行修改的。所以是第于是地址传递。本回答被提问者采纳 参考技术B 你要记住,所有传递给函数的参数都是通过值传递方式进行的。数组名作为函数参数也不例外。LUA脚本怎么合函数传递参数
参考技术A static int ABC(lua_State *L)int n =lua_gettop(L);
double sum =0;
int i;
for (i=1;i<n;i++)
sum+=lua_tonumber(L,i);
lua_pushnumber(L,sum/n);
lua_pushnumber(L,sum);
return 2;
lua_register(L, "ABC", ABC); 参考技术B static int ABC(lua_State *L)
int n =lua_gettop(L);
double sum =0;
int i;
for (i=1;i<n;i++)
sum+=lua_tonumber(L,i);
lua_pushnumber(L,sum/n);
lua_pushnumber(L,sum);
return 2;
lua_register(L, "ABC", ABC);
以上是关于C语言中,数组名作为函数参数,属于啥传递,为啥?的主要内容,如果未能解决你的问题,请参考以下文章