将静态数组作为参数传递

时间:2016-03-27 07:30:30

标签: c arrays arguments parameter-passing

1)我们可以传递一个函数中定义的静态数组(比如fun1())来说fun2()吗?如果是,那么实际和形式参数是什么?

2)如果静态数组可以作为参数传递,那么在递归函数的情况下该怎么做?

P.S我正在使用C

1 个答案:

答案 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