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; 해준다 
      1. 함수를 빠져나간다! 
      2. 값을 반환한다
    • 함수의 정의와 선언은 분리할 수 있다. 
      • 함수의 선언이 메인 함수보다 아래 있을 경우 컴파일러는 그 파일의 종류를 알 수 없다
      • 따라서 함수의 선언을 미리 해주고 정의는 밑에서 해도 상관 없다
      • 이때 함수의 선언시 매개변수의 변수명을 입력할 필요는 없다 ex) int add(int, int) == int add(int num1, int num2);
  • 변수의 존재기간과 접근범위 1: 지역변수
    • 변수의 종료는 크게 '전역변수'와 '지역변수'로 나뉜다, 둘의 차이점
      1. 메모리상에 존재하는 기간
      2. 변수에 접근할 수 있는 범위
    • 함수 내에만 존재 및 접근 가능한 지역변수(Local Variable)
      • 지역 변수에서 지역은 중괄호에 의한 영역이다 즉 지역변수는 "중괄호 내에 선언되는 모든 변수" 이다
      • 지역 변수는 해당지역을 벗어나게 되면 자동으로 소멸된다 
      • 지역변수는 이름이 같아도 선언된 지역이 다르면 문제되지 않는다!!
    • 지역변수는 다양한 형태가 있다
      1. 함수 에서의 지역변수
      2. 반복문 에서의 지역변수 // 반복문은 중괄호를 빠져나갔다 다시 접근하는 개념으로 반복시 지역변수가 반환된 후 호출됨!
      3. 조건문 에서의 지역변수
    • 매개변수도 지역변수의 일종이다 ( 매개변수가 지역변수에 포함된다)
  • 변수의 존재기간과 접근범위 2: 전역변수, static변수, register변수
    • 전역변수란 프로그램이 처음 실행되면 메모리 공간에 할당되어 프로그램이 종료될 때 까지 메모리에 남아있는 변수이다
    • 전역변수는 중괄호 내에 선언되지 않는다 
    • ex) #include <stdio.h>
      • void Add(int);
      • int num;
      • int main(void) { }
    • 전역변수의 특징
      1. 프로그램의 시작과 동시에 메모리 공간에 할당되어 종료 시까지 존재한다
      2. 별도의 값으로 초기화하지 않으면 0으로 초기화된다
      3. 프로그램의 전체 영역 어디서든 접근이 가능하다
      4. 영역내 지역변수가 같은 이름으로 선언되면 그 지역에서는 지역변수가 사용된다
      5. 프로그램의 구조를 복잡하게 하므로 사용을 자제할 것
    • 지역변수에 static 선언을 추가해서 만드는 static 변수 (전역변수는 나중에)
      1. 선언된 함수 내에서만 접근이 가능하다 (지역변수 특징)
      2. 딱 1회만 초기화되고 프로그램 종료 시까지 메모리 공간에 존재한다 (전역변수 특징)
      3. 전역변수 대신 사용할 수 있다
    • register 변수
      1. 지역변수에 register 선언을 추가하면 "레지스터 변수" 가 된다
      2. 레시즈터 변수란 CPU내에 존재하는 '레지스터'라는 메모리 공간에 저장될 확률이 높아진다
      3. 선언한다고 무조건 저장되는 것이 아니라 컴파일러가 결정하는 것이다
      4. 빈번히 사용하는 변수에 사용하고 레지스터에 저장되면 연산이 아주 빨라진다(성능↑)
      5. 전역변수에는 사용할 수 없다
    • 재귀함수에 대한 이해(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

+ Recent posts