블럭의 변수 캡쳐링
블럭 내 변수 캡쳐링
C의 코드블럭은 사실상 여타 프로그래밍 언어의 클로저개념1과 거의 동일하다.
블럭 내부에서는 다음의 변수들을 사용할 수 있다.
- 전역변수와 정적변수는 블럭내에서 액세스 가능하다.
- 블럭 내로 전달된 파라미터는 블럭 내부로 복사되며 지역변수처럼 액세스한다.
- 블럭을 감싼 영역의 스택 변수는 블럭 내에서 액세스 가능하되 상수로 취급한다.
- 블럭을 감싼 영역에서
__block
변경자와 함께 선언된 변수는 참조로 전달되며, 블럭내에서 변경 가능하다. - 블럭 내에서 선언된 지역 변수는 함수의 지역변수와 동일하게 동작한다. 액세스 가능하며, 블럭의 스코프가 끝날 때 파괴된다.