1. 매개변수 사이의 자료전달
1) 방법
(1) 값에 의한 자료전달 (call by value)
- 기본적 방법.
- 실매개변수와 형식매개변수 사이에 값의 전달
- 호출한 함수의 실행이 끝난 다음 전달받은 값을 되돌려 받지 못함.
- 피호풀 함수 내에서 형식매개변수의 값이 바뀌어도 실매개변수의 값은 변하지 않음
(2) 참조에 의한 자료전달 (call by reference)
- 호출함수와 피호출함수의 매개변수 값을 서로교환
- 값을 전달하는 것이 아닌, 실 매가변수의 값이 들어있는 주소 값이 전달됨.
- 주소값을 전달하기 위해 실 매개변수 앞에 주소연산자 '&'을 붙이고
주소값을 전달받기 위해 포인터변수 int 값* (값 뒤에 내용연산자 '*' 붙임) 활용
- 피호출함수 내에서 값의 변화가 일어나면 실 매개변수의 값도 변화됨.
2. 기억클래스
1) 기억클래스 (storage class)
- 변수를 기억공간의 특정영역에 할당하는 방법
- 각 변수의 유효범위와 존속기간을 설적
(1) 변수의 사용위치에 따라
- 지역변수
- 전역변수
(2) 변수의 존속기간에 따라
- 자동변수
- 정적변수
-외부변수
-레지스터변수
2) 지역변수와 전역변수
(1) 지역변수 (local variable)
- 특정 범위 내에만 통용
- 선언된 블록이나 함수 내에서 사용가능
- 함수에서 사용되는 매개 변수도 해당
(2) 전역변수 (global variable)
- 함수 밖이나 외부파일에서 선언되어 프로그램 전체에 걸쳐 사용되는 변수
(3) 비교
- 동일 범위 내에서는 지역변수 우선
- 전역변수의 선언은 프로그램 선두에 위치
- 가급적 지역변수를 사용하는 것이 효율적 ---> 함수의 독립성, 디버깅, 기억공간 효율성 향상
3) 변수의 기억클래스 종류
- 변수의 초기화, 존속기간, 유효범위에 따라 구별
[기억클래스를 이용한 변수선언]
* 형식 : 기억클래스 자료형 변수명;
* 기능 : 기존의 변수 선언문에 기억클래스만 기입하며 선언된 변수에 저장된 자료는 해당 기억영역에 놓이게 됨.
(1) 자동변수(auto0)
- 함수 실행시 만들어지고, 실행 끝나면 기억공간이 제거됨.
- 예약어 auto 사용 (생략가능)
- 통용범위는 변수가 선언된 블록이나 함수 내로 한정
- 지역변수에 해당
- 초기화가 필요
(2) 정적변수
- 기억 영역이 프로그램 종료시까지 유지
- 예약어 static 사용
- 전역 변수에 해당
- 변수의 값은 프로그램 실행 중 계쏙 유지
- 초기화가 없으면 0으로 초기화 됨.
- 자동변수로 블록을 벗어나면 값이 소멸됨.
(3) 외부변수
- 함수의 외부에서 선언
- 예약어 extern을 사용
- 전역변수에 해당
- 초기화가 없으면 0으로 초기화됨
- 다른파일에서 외부변수로 선언된 변수의 값을 참조할 수 있다.
(4) 레지스터변수
- CPU 내의 레지스터에 자료를 저장하고자 할때
- 예약어 register 사용
- 자동변수와 동일한 속성
- 프로그램 실행속도 증가 목적으로 사용 (주로 반복문에서 카운터변수로 사용)
'공부정리 및 기록 > [C언어] 프로그래밍' 카테고리의 다른 글
[C언어] 프로그램과 프로그래밍 언어 이해하기 / 프로그래밍의 기초 (0) | 2020.07.22 |
---|---|
[C언어] 배열 선언 & 값 대입 & 포인터 & 짝수 홀수 합 구하는 프로그램 만들기 문제 (0) | 2020.07.13 |
6. 함수와 기억 클래스(1) (0) | 2020.05.28 |
5. 선택 제어문과 반복 제어문 (0) | 2020.05.28 |
3. 입·출력 함수와 연산자(2) (0) | 2020.05.28 |
댓글