knrt.net
当前位置:首页 >> C语言中函数定义形参为数组时的问题 >>

C语言中函数定义形参为数组时的问题

c语言函数调用方法:1、如果func是一个已经定义的函数;2、可以这么写:func();3、也可以这么写,如果func有返回值:a = func();4、还可以这么写: while(func()){}或 if(func()){}

例如,int add(int a,int b) { sum=a/b; return sum; } 函数中出现形参的传递,实现中用到a,b,且a,b的使用有特定顺序,位置就不能省略.

&是引用 *是指针 定义函数形参时 引用是值传递,指针是地址传递

形参只在这个函数执行的时候才会被分配内存,当函数执行完毕后分配的内存会被释放.至于理由……函数的参数属于局部变量,如果一开始就分配的话,别的地方也能访问修改,数据就不确定了.另外,函数的形参实际是:调用此函数前,将实参压入堆栈,然后跳转到函数的地址执行.函数执行完跳回去时,堆栈弹出,内存释放.

在定义函数时,函数名后面括号中的变量名称为“形式参数”,简称“形参”;在主函数中调用一个函数时,函数名后面括号中的参数(可以是一个表达式)称为“实际参数”(简称“实参”). 在主函数里的是实参,在子函数里的是形参.因为在真正执行的时候是把实参传递给形参来执行的,所以实参才是实际的参数.我举个简单例子, 比如: int jjj(int a, int b) void main() { int x, int y; jjj(x, y); } a、b是形参,x和y是实参.

a如果是函数是可以的,x[]表示数组x的地址,int x[]等价于int *x

可以,你这个问题涉及到变量的作用域的问题,a[10]这个数组变量只作用于main()函数中,新的函数fun中的实参*a作为在函数作用于中有效,所以双方互不影响.

因为数组传递的是数组的首地址,所以也是地址传递,所以形参改变时实参也要变.

一维可以直接写成void fun(char a[]); 二维则需要写出第二维的大小void fun(char a[][5]); 在这2中声明中,都可以写完整的维数 void fun(char a[3]); void fun(char a[2][5]);

是啊 c中数组定义时要指定大小. 作为形参的时候,可以不指定,因为在函数调用的时候,数组会转为指针的.

网站首页 | 网站地图
All rights reserved Powered by www.knrt.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com