C - 역할 영역

C - 역할 영역
C 변수의 역할 영역 은 다음 과 같 습 니 다.
  • 블록 역할 영역
  • 함수 작용 역
  • 함수 원형 작용 역 또는 파일 작용 역
  • 설명 프로그램 에서 표지 문자 에 접근 할 수 있 는 영역 입 니 다.
    블록 역할 영역
    보통 은 괄호 로 묶 은 구역 입 니 다. 예 를 들 어:
  • 전체 함 수 는 하나의 블록 이다.
  • 함수 중의 임 의 복합 문 구 는 하나의 블록 입 니 다. 블록 에 정 의 된 변 수 는 (block scope) 가 있 습 니 다. 블록 역할 도 메 인 변 수 를 볼 수 있 는 범 위 는 정의 에서 이 정 의 를 포함 하 는 블록 의 끝 입 니 다. 또한 함수 에 들 어 오 는 형 삼 성명 은 외부 에 있 지만 그들 도 역할 도 메 인 을 가지 고 함수 체 에 속 합 니 다.
  • 다음 코드 의 변수 cleo 와 patrick 는 블록 역할 영역 을 가지 고 있 습 니 다.
    double blocky(double cleo) {
        double patrick = 0.0;
        //  ...
        return patrick;
    }
    

    내부 블록 에 있 는 변 수 를 설명 합 니 다. 그 역할 영역 은 이 성명 이 있 는 블록 에 만 제 한 됩 니 다.
    double blocky(double cleo) {
        double patrick;
        int i;
        for ( i = 0 ; i < 10 ; i ++ ) {
            // q       
            double q = cleo * i;        
            patrick *= q;
        }   // q       
        return patrick;
    }
    

    이 예 에서 q 의 역할 도 메 인 은 내부 블록 for 순환 에 만 국한 되 고 내부 블록 에 있 는 코드 만 q 에 접근 할 수 있 습 니 다. 이전에 블록 역할 도 메 인 을 가 진 변 수 는 블록 의 시작 에 성명 해 야 합 니 다. C99 기준 은 이 제한 을 완화 하여 블록 에 있 는 임의의 위치 에서 변 수 를 설명 할 수 있 습 니 다. 따라서 for 의 순환 헤드 에 대해 서 는 이렇게 쓸 수 있 습 니 다.
        for ( int i = 0 ; i < 10 ; i ++ ) printf("A C99 feature: i = %d", i);
    

    이 새로운 특성 에 적응 하기 위해 C99 는 블록 의 개념 을 for 순환, while 순환, do while 순환 과 if 문 구 를 포함 하 는 코드 로 확장 합 니 다. 이 코드 들 이 괄호 로 묶 이지 않 아 도 블록 의 일부분 이 라 고 할 수 있 습 니 다. 따라서 위의 for 순환 중의 변 수 는 i 는 for 순환 블록 의 일부분 으로 간주 되 고 그의 역할 도 메 인 은 for 순환 에 만 제 한 됩 니 다. for 순환 에서 벗 어 나 면,i 를 다시 방문 할 수 없습니다. (function scope) goto 구문 에 만 사용 되 는 태그 입 니 다. 이것 은 하나의 태그 가 함수 의 내부 블록 에 나타 나 더 라 도 그의 역할 영역 은 전체 함수 로 연장 되 는 것 을 의미 합 니 다. 만약 두 블록 에 같은 태그 가 나타 나 면 혼 란 스 럽 고 태그 의 함수 역할 영역 은 이러한 일이 발생 하 는 것 을 방지 합 니 다. (function prototype scope) 함수 원형 에 사용 되 는 형 참 명 (변수 명) 은 다음 과 같다.
    int mighty(int mouse, double large);
    

    함수 원형 작용 역 의 범 위 는 형 삼 정의 에서 원형 성명 으로 끝난다. 이것 은 컴 파 일 러 가 함수 원형 중의 형 삼 을 처리 할 때 그녀의 유형 에 만 관심 을 갖 는 다 는 것 을 의미한다. 형 삼 명 (있 으 면) 은 통산 이 중요 하지 않다. 또한 형 삼 명 이 있어 도 함수 정의 의 형 삼 명 과 일치 할 필요 가 없다. 길 어 지 는 수조 에서 만 형 삼 명 이 유용 하 다.
    void use_a_VLA(int n, int m, ar[n][m]);
    

    네모 난 괄호 에는 함수 원형 에 명 시 된 이름 을 사용 해 야 합 니 다.
    함수 밖 에 있 는 변 수 를 정의 합 니 다. (file scope) 파일 역할 도 메 인 을 가 진 변 수 는 그의 정의 에서 이 정의 가 있 는 파일 의 끝 까지 모두 볼 수 있 습 니 다.
    #include 
    int units = 0;
    void critic(void);
    int main(void) {
        // ...
    }
    
    void critic(void) {
        // ...
    }
    
    

    이 변 수 는 units 가 파일 역할 영역 을 가지 고 있 습 니 다. main () 과 critic () 함수 가 모두 사용 할 수 있 습 니 다. (더 정확히 말 하면 units 는 외부 링크 파일 역할 영역 을 가지 고 있 습 니 다) 이러한 변 수 는 여러 함수 에 사용 할 수 있 기 때문에 파일 역할 영역 변 수 는 (global variable) 라 고도 부 릅 니 다.

    좋은 웹페이지 즐겨찾기