Chapter7. 조건에 따른 흐름의 분기
- 조건적 실행과 흐름 분기
- 흐름 분기의 필요성 : 프로그램을 선택적으로 수행하기 위함
- if문을 이용한 선택적 실행
- if(비교연산1) {명령}else if(비교연산2){명령] else {명령} 이때 조건을 만족하는 if문이 발견되면 나머지 if문은 건너뜀 if문에 아무것도 해당되지 않으면 else 문 명령 실행
- if~else문의 구성 : if(조건문) {명령} else { if(조건문) {명령} else { if(조건문) {명령} else } } }따라서 하나의 문장!!
- 조건 연산자 "삼 항 연산자"
- (조건) ? a : b 로 사용(?:)
- 조건이 참이면 a 반환, 조건이 거짓이면 b 반환!!
- 반복문의 생략과 탈출 (continue, break)
- break : 반복문을 빠져나올 때 사용하는 키워드 // 반복문 아예 종료
- continue : 반복문의 조건문으로 이동(비교연산부터 다시 진행) // 반복1회차 종료후 2회차 시작!
- switch문에 의한 선택적 실행
- switch(인자){ case (조건1값): 명령1; case (조건2값): 명령2; default: 명령3; }
- 인자 값이 조건1값과 같으면 명령1 실행후 조건2 비교후 같으면 명령2 실행후 명령3 실행
- switch 문은 case 1: 실행 후에 순차적으로 2,3 실행함, 이때 하나만 실행하려면 break문으로 정지해야함!
- goto문
- 프로그램의 흐름을 원하는 위치로 이동시킴 (절차지향의 C언어의 흐름을 방해하므로 잘 쓰이지 않음)
- goto X: ~~~ X:, Y: ~~~ goto Y; 로 위치 지정해놓은 레이블의 위치로 이동하여 실행함
- 앞 뒤로 이동 가능
Chapter8. 함수!!
- 함수의 정의, 선언
- 함수는 반환형태 함수이름 입력형태 함수의 몸체로 구분된다.
- int main (void) { } // 반환형태 함수이름 (입력형태) {함수의 몸체}
- 함수의 입력과 출력이 있다. - 둘다 있을 필요도, 둘다 없을 필요도 없다.
- return 이 지니는 의미 : 이때 1번, 2번의을 합쳐 사용할 때는 return 1; 과 같이 값을 넣어주고 1번만 사용하려면 return; 해준다
- 함수를 빠져나간다!
- 값을 반환한다
- 함수의 정의와 선언은 분리할 수 있다.
- 함수의 선언이 메인 함수보다 아래 있을 경우 컴파일러는 그 파일의 종류를 알 수 없다
- 따라서 함수의 선언을 미리 해주고 정의는 밑에서 해도 상관 없다
- 이때 함수의 선언시 매개변수의 변수명을 입력할 필요는 없다 ex) int add(int, int) == int add(int num1, int num2);
- 변수의 존재기간과 접근범위 1: 지역변수
- 변수의 종료는 크게 '전역변수'와 '지역변수'로 나뉜다, 둘의 차이점
- 메모리상에 존재하는 기간
- 변수에 접근할 수 있는 범위
- 함수 내에만 존재 및 접근 가능한 지역변수(Local Variable)
- 지역 변수에서 지역은 중괄호에 의한 영역이다 즉 지역변수는 "중괄호 내에 선언되는 모든 변수" 이다
- 지역 변수는 해당지역을 벗어나게 되면 자동으로 소멸된다
- 지역변수는 이름이 같아도 선언된 지역이 다르면 문제되지 않는다!!
- 지역변수는 다양한 형태가 있다
- 함수 에서의 지역변수
- 반복문 에서의 지역변수 // 반복문은 중괄호를 빠져나갔다 다시 접근하는 개념으로 반복시 지역변수가 반환된 후 호출됨!
- 조건문 에서의 지역변수
- 매개변수도 지역변수의 일종이다 ( 매개변수가 지역변수에 포함된다)
- 변수의 종료는 크게 '전역변수'와 '지역변수'로 나뉜다, 둘의 차이점
- 변수의 존재기간과 접근범위 2: 전역변수, static변수, register변수
- 전역변수란 프로그램이 처음 실행되면 메모리 공간에 할당되어 프로그램이 종료될 때 까지 메모리에 남아있는 변수이다
- 전역변수는 중괄호 내에 선언되지 않는다
- ex) #include <stdio.h>
- void Add(int);
- int num;
- int main(void) { }
- 전역변수의 특징
- 프로그램의 시작과 동시에 메모리 공간에 할당되어 종료 시까지 존재한다
- 별도의 값으로 초기화하지 않으면 0으로 초기화된다
- 프로그램의 전체 영역 어디서든 접근이 가능하다
- 영역내 지역변수가 같은 이름으로 선언되면 그 지역에서는 지역변수가 사용된다
- 프로그램의 구조를 복잡하게 하므로 사용을 자제할 것
- 지역변수에 static 선언을 추가해서 만드는 static 변수 (전역변수는 나중에)
- 선언된 함수 내에서만 접근이 가능하다 (지역변수 특징)
- 딱 1회만 초기화되고 프로그램 종료 시까지 메모리 공간에 존재한다 (전역변수 특징)
- 전역변수 대신 사용할 수 있다
- register 변수
- 지역변수에 register 선언을 추가하면 "레지스터 변수" 가 된다
- 레시즈터 변수란 CPU내에 존재하는 '레지스터'라는 메모리 공간에 저장될 확률이 높아진다
- 선언한다고 무조건 저장되는 것이 아니라 컴파일러가 결정하는 것이다
- 빈번히 사용하는 변수에 사용하고 레지스터에 저장되면 연산이 아주 빨라진다(성능↑)
- 전역변수에는 사용할 수 없다
- 재귀함수에 대한 이해(Recursive 함수)
- 함수를 실행하는 도중에 다시 함수가 호출되면 그 함수의 복사본을 하나 더 만들어서 실행한다
- 재귀함수는 반복을 혼자 빠져나가지 못하므로 반복을 종료할 조건을 붙여서 만들어야 한다
- 재귀함수는 자료구조나 알고리즘의 어려운 문제를 단순화 시켜 해결해주는 중요한 무기!!
'IT공부 > 윤성우 열혈 C프로그래밍' 카테고리의 다른 글
포인터와 배열의 시작_2 (0) | 2022.02.04 |
---|---|
포인터와 배열의 시작_1 (0) | 2022.02.02 |
C언어의 기본_3 (0) | 2022.01.26 |
C언어의 기본_2 (0) | 2022.01.26 |
C언어의 기본_1 (0) | 2022.01.23 |