크래프톤정글/TIL & WIL

크래프톤정글 5주차; TIL 1 - C 프로그래밍, 함수 호출 방식, C언어 extern, static 변수

jamie-lee 2022. 12. 3. 00:55
  • 개인적으로 공부하면서 지속적으로 정보를 추가, 수정, 삭제합니다.
  • 정확하지 않은 부분 피드백 주시면 감사합니다.
  • TIL 노트의 일부를 정리해서 적합한 카테고리의 노트 항목에 추가합니다.

2022-11-26

에드위드 “C 프로그래밍 기초 & 심화” 강좌

참고: https://www.edwith.org/knuswedu_cbasic/
https://www.edwith.org/knuswedu_c/

무엇?

  • C 프로그래밍 기초
    • C언어 변수와 자료형
    • 입출력
    • 기본 연산자 + 특수한 연산자
    • 배열 프로그래밍
    • 문자열 프로그래밍
    • 라이브러리 함수 & 사용자 정의 함수 사용하기
  • C 프로그래밍 심화
    • 비트연산자
    • 다차원 배열
    • 포인터 & 다중 포인터

→ C언어 노트에 정리해서 추가

왜?

5주차 키워드 C로 RB 트리 구현 & 추후 pintOS 프로젝트를 위함

함수 호출 방식; call by value, call by reference 의 차이

참고: https://wayhome25.github.io/cs/2017/04/11/cs-13/
https://brightwon.tistory.com/7

  • 함수 호출 방식이란? 함수에서 parameter를 전달하는 방식
  • 호출 종류
    1. 값에 의한 호출call by value
      • 함수에 인자를 넘길 때 값만 복사하여 넘김 → 복사된 인자를 함수 내에서 값을 변경해도 호출자(외부의 변수의 값)에게 영향을 주지 않음
    2. 참조에 의한 호출call by reference
      • 함수에 인자를 넘길 때 메모리 주소(=reference)를 넘김 → 함수 내에서 인자 값 변경 시, 호출자의 값도 변경 됨
    3. 객체 참조에 의한 호출call by object reference
      • 파이썬의 함수 호출 방식
      • 객체의 주소가 함수로 전달됨, 전달된 객체를 참조하여 변경 시 호출자에게 영향을 주나, 새로운 객체를 만들 경우 호출자에게 영향을 주지 않음

C언어 extern, static 변수의 차이점

참고: https://ingorae.tistory.com/894
https://velog.io/@sunw9/2-2.-extern-static-const-키워드-알아보기
https://second815.tistory.com/entry/extern-과-static-의미지역변수전역변수정적변수

무엇?

  • 전역변수
    • 함수 안에서 선언 된 변수
  • 지역변수
    • 여러 함수들이 공통적으로 쓸 수 있는 변수
  • extern 변수
    • 여러 파일에서 사용하고 싶은 함수, 변수를 선언할 때 사용
    • 기본적으로 변수, 함수는 extern으로 선언 됨
  • static 변수
    • 한 파일내에서만 쓰고 싶은 전역 변수를 선언할 때 사용
    • 내부 static
    • 외부 static

왜?

하나의 프로그램을 개발할 때 하나의 파일만으로 개발하지 않고, 여러 사람이 여러 개의 파일을 이용해서 개발하므로 파일 간의 함수를 참조할 때 필요