Читая этот Вопрос Я заметил интересный сценарий.У вопроса есть функция, которая вызывается только один раз:
int* missing_elements(int arr[], int len){
static int arr2[]={0};
for(int i=0,j=1; i < 7; i++,j++){
if(arr[i] != j){
arr2[i]=j;
if(arr[i] == j++){
break;
}
}
}
return arr2;
}
Функция возвращает указатель на массив, который определен как статический внутри функции.Мне интересно, как обрабатывается область действия arr2[]
.Если arr2[]
был определен как не статический, то он выпал бы из области видимости, и вы не могли предположить, что возвращенный указатель будет указывать на действительные данные.
Мой вопрос: поскольку arr2
является статическим, он всегда будет находиться в области видимости, даже если определяющая его функция никогда больше не будет вызываться.Является ли это неопределенным поведением или мы можем предположить, что оно никогда не теряет прицел?