Ja, können Sie statische Array in Funktion zu einer anderen Funktion definiert passieren. Aktueller Parameter ist ein statisches Array, aber der formale Parameter ist ein nicht statisches Array, als wäre es statisch nicht sinnvoll (Statische Arrays werden bei der Kompilierung Speicher zugewiesen und der Speicher wird auf dem Stack zugewiesen).
Und im Falle rekursiver Funktion als statisches Array ist in Stack es wird in rekursiven Aufrufe aktualisiert (wenn wir es aktualisieren) ist sein Geltungsbereich Lebensdauer des Programms.
#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;
}
Ausgang:
, dass ein Array statisch ist spielt keine Rolle, übergeben Sie es wie jedes andere Array. Denken Sie jedoch daran, dass wenn Sie ein Array an eine Funktion übergeben, es zu einem Zeiger auf sein erstes Element zerfällt. Wenn Sie also die Anzahl der Elemente im Array benötigen, müssen Sie es auch übergeben. –
Wie nennt man ein "statisches" Array? 'static' ist ein C-Schlüsselwort und es scheint mir, dass Sie etwas anderes meinen, wenn Sie dieses Wort verwenden. Vielleicht, was Sie fragen, bezieht sich auf: http://stackoverflow.com/questions/27755446/reference-to-array-vs-reference-to-array-pointer – jdarthenay
Bitte geben Sie einen Code. – Harry