English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

C / C ++g에서 함수가 배열을 반환할 수 있습니까?

정적 변수는 프로그램 실행 중 메모리에 남아 있는 변수이며, 그들의 생명주기는 프로그램 전체 실행 시간입니다. 이는 함수가 실행 중에만 메모리에 남아 있고 함수가 종료되면 소멸되는 자동 변수와는 다릅니다.

정적 변수는 메모리의 데이터 세그먼트에 저장됩니다. 데이터 세그먼트는 프로그램의 가상 주소 공간의 일부입니다.

명시적으로 초기화되지 않거나 0으로 초기화된 모든 정적 변수는 비 초기화 데이터 세그먼트(또는 BSS 세그먼트)에 저장됩니다. 이와 달리 초기화된 정적 변수는 초기화된 데이터 세그먼트에 저장됩니다.

다음은 예제입니다:

static int x = 5;
static int y;
정적 변수 x는 초기화 데이터 세그먼트에 저장되며, 정적 변수 y는 BSS 세그먼트에 저장됩니다.

C 언어에서 정적 변수를 사용하는 프로그램 예제는 다음과 같습니다-

예제

#include<stdio.h>
int func() {
   static int i = 4 ;
   i++;
   return i;
}
int main() {
   printf("%d\n", func());
   printf("%d\n", func());
   printf("%d\n", func());
   printf("%d\n", func());
   printf("%d\n", func());
   printf("%d\n", func());
   return 0;
}

위 프로그램의 출력은 다음과 같습니다-

5
6
7
8
9
10

이제 위의 프로그램을 이해해 보겠습니다.

이 함수 내에서func()i는 초기화되어4정적 변수는 초기화 데이터 세그먼트에 저장되며, i는 초기화되어 있습니다. 그런 다음 i가 증가되고 값을 반환합니다. 이 코드 부분을 보여드립니다-

int func() {
   static int i = 4 ;
   i++;
   return i;
}

함수 내에서main()이 함수func()호출됨6이 함수는 호출되었으며, 출력할 i의 값을 반환합니다. i는 정적 변수이므로 프로그램 실행 중 메모리에 남아 있으며 일관된 값을 제공합니다. 이 코드 부분을 보여드립니다-

printf("%d\n", func());
printf("%d\n", func());
printf("%d\n", func());
printf("%d\n", func());
printf("%d\n", func());
printf("%d\n", func());
Kotlin 튜토리얼