C++프로 그래 밍 의 국부 변수 와 전역 변 수 를 깊이 이해 하 다

3165 단어 C++변량
국부 변수
한 함수 내부 에서 정 의 된 변 수 는 내부 변수 입 니 다.이 함수 범위 내 에서 만 유효 합 니 다.즉,이 함수 내 에서 만 사용 할 수 있 습 니 다.이 함수 이외 에는 이 변 수 를 사용 할 수 없습니다.마찬가지 로 복합 문 에서 정 의 된 변 수 는 본 복합 문 범위 내 에서 만 유효 합 니 다.이것 은 부분 변수(local variable)라 고 합 니 다.예:

부분 변수 에 대한 설명:
1)주 함수 main 에서 정의 하 는 변수(m,n)도 주 함수 에서 만 유효 하 며,주 함수 에서 정의 되 어 전체 파일 이나 프로그램 에서 유효 하지 않 습 니 다.주 함수 도 다른 함수 에서 정 의 된 변 수 를 사용 할 수 없습니다.
2)서로 다른 함수 에서 같은 이름 의 변 수 를 사용 할 수 있 는데 서로 다른 대상 을 대표 하고 서로 간섭 하지 않 는 다.예 를 들 어 f1 함수 에서 변수 b 와 c 를 정 의 했 습 니 다.만약 에 f2 함수 에서 도 변수 b 와 c 를 정의 하면 메모리 에서 서로 다른 단원 을 차지 하고 헷 갈 리 지 않 습 니 다.
3)한 함수 안의 복합 문 에서 변 수 를 정의 할 수 있 습 니 다.이런 변 수 는 본 복합 문 에서 만 유효 합 니 다.이런 복합 문 구 는 프로그램 이나 프로그램 블록 이 라 고도 부 릅 니 다.
4)형식 매개 변수 도 부분 변수 이다.예 를 들 어 f1 함수 중의 형 삼 a 도 f1 함수 에서 만 유효 하 다.다른 함 수 는 호출 할 수 없습니다.
5)함수 성명 에 나타 난 매개 변수 이름 의 역할 범 위 는 본 줄 의 괄호 안에 만 있 습 니 다.실제로 컴 파일 시스템 은 함수 성명 의 변수 이름 을 무시 하고 함 수 를 호출 할 때 도 저장 부 를 할당 하지 않 았 습 니 다.예 를 들 면:

int max(int a, int b);//       a、b
int max(int x, int y) //    ,   x、y
{
 cout<<x<<y<<endl; //  ,x、y       
 cout<<a<<b<<endl; //  ,a、b       
}
컴 파일 할 때 max 함수 체 의 a 와 b 가 정의 되 지 않 았 다 고 생각 합 니 다.
전역 변수
앞에서 소개 한 바 와 같이 프로그램의 컴 파일 단 위 는 원본 파일 이 고 원본 파일 은 하나 또는 몇 개의 함 수 를 포함 할 수 있 습 니 다.함수 내 에서 정 의 된 변 수 는 국부 변수 이 고 함수 외 에 정 의 된 변 수 는 외부 변수 로 전역 변수(global variable,전과정 변수)라 고도 부른다.전역 변수의 유효 범 위 는 변 수 를 정의 하 는 위치 부터 원본 파일 까지 입 니 다.예:

p,q,c1,c2 는 모두 전역 변수 이지 만 그들의 역할 범 위 는 다 릅 니 다.main 함수 와 f2 함수 에 서 는 전역 변수 p,q,c1,c2 를 사용 할 수 있 지만 함수 f1 에 서 는 전역 변수 p,q 만 사용 할 수 있 고 c1 과 c2 를 사용 할 수 없습니다.
한 함수 에서 이 함수 의 국부 변 수 를 사용 할 수 있 을 뿐만 아니 라 효과 적 인 전역 변 수 를 사용 할 수 있다.
전역 변수 에 대한 설명:
1)전역 변 수 를 설정 하 는 역할 은 함수 간 데이터 관 계 를 증가 하 는 경로 이다.
2)필요 하지 않 을 때 전역 변 수 를 사용 하지 않 는 것 을 권장 합 니 다.왜냐하면:
전역 변 수 는 프로그램의 모든 실행 과정 에서 저장 소 를 차지 합 니 다.필요 할 때 만 단원 을 만 드 는 것 이 아 닙 니 다.
함수 의 유 니 버 설 성 을 떨 어 뜨 렸 습 니 다.함 수 를 실행 할 때 외부 변수의 영향 을 받 아야 하기 때 문 입 니 다.한 함 수 를 다른 파일 로 옮 기 면 관련 외부 변수 와 값 을 함께 옮 겨 야 합 니 다.그러나 이 외부 변수 가 다른 파일 의 변수 와 이름 이 같 으 면 문제 가 발생 하여 프로그램의 신뢰성 과 유 니 버 설 성 을 떨 어 뜨 린 다.프로그램 설계 에서 모듈 을 구분 할 때 모듈 의 내부 집적 성 이 강하 고 다른 모듈 과 의 결합 성 이 약 하 다.즉,모듈 의 기능 은 단일 해 야 한다(서로 무관 한 많은 기능 을 하나의 모듈 에 넣 지 마라).다른 모듈 과 의 상호 영향 은 가능 한 한 적어 야 하고 전체 변 수 를 사용 하 는 것 은 이 원칙 에 부합 되 지 않 는 다.
일반적으로 프로그램 중의 함 수 를 폐쇄 체 로 만들어 야 하 는데'실 삼-형 삼'의 경 로 를 통 해 외부 와 연락 할 수 있 는 것 을 제외 하고 다른 경로 가 없다.이런 프로그램 은 이식 성 이 좋 고 가 독성 이 강하 다.
전역 변 수 를 너무 많이 사용 하면 프로그램의 선명 성 을 떨 어 뜨 릴 수 있 습 니 다.각 함수 가 실 행 될 때 전역 변수의 값 을 바 꿀 수 있 습 니 다.프로그램 이 잘못 되 기 쉽 습 니 다.따라서 전역 변 수 를 제한 해 야 한다.
3)같은 원본 파일 에서 전역 변수 가 국부 변수 와 동명 이면 국부 변수의 작용 범위 내 에서 전역 변수 가 차단 된다.즉,이 변 수 는 작용 하지 않 는 다.
변수의 유효 범 위 를 변수의 역할 영역(scope)이 라 고 합 니 다.귀납 적 으로 변 수 는 4 가지 서로 다른 작용 역,파일 작용 역(file scope),함수 작용 역(functionscope),블록 작용 역(block scope)과 함수 원형 작용 역(function prototype scope)이 있다.파일 역할 도 메 인 은 전체 적 이 고 다른 세 가 지 는 부분 적 이다.
변 수 를 제외 하고 식별 자 로 대표 되 는 모든 실 체 는 역할 영역 이 있 고 개념 은 변수의 역할 영역 과 비슷 하 다.

좋은 웹페이지 즐겨찾기