1)我们可以传递一个函数中定义的静态数组(比如fun1())来说fun2()吗?如果是,那么实际和形式参数是什么?
2)如果静态数组可以作为参数传递,那么在递归函数的情况下该怎么做?
P.S我正在使用C
答案 0 :(得分:-1)
是的,您可以将函数中定义的静态数组传递给另一个函数。实际参数是静态数组,但形式参数是非静态数组,好像它的静态没有意义(静态数组在编译时分配内存并且内存分配在堆栈上强>)。
如果是递归函数,因为静态数组在Stack中,它会在递归调用中得到更新(如果我们更新它),它的范围就是程序的生命周期。
#include <bits/stdc++.h>
using namespace std;
void fun2(int arr[],int i){
if(i==3)return ;
arr[0]=i;
fun2(arr,i+1);
}
void fun1(){
static int sarr[]={99};
cout<<sarr[0]<<endl;
fun2(sarr,0);
cout<<sarr[0]<<endl;
}
int main() {
fun1();
return 0;
}
输出:
99
2