모두를 위한 컴퓨터과학 CS50

Namhee KIM·2022년 7월 17일
0
post-thumbnail

네이버 코스에 등록되어 있는 하버드대학의 CS기초 강의인 CS50을 수강하며..

코드 기본 골격 (C언어)

# include <studio.h>

int main(void)
{
	printf("hello, world\n");
}

온라인 C코드 실습 환경

  • # include <라이브러리> 라이브러리를 호출하는 부분
  • int main(void) 함수의 출력되는 형태(int)와 입력되는 형태(void) 정의, 그리고 함수명(main)
  • printf("hi"); 출력

컴파일링

C파일의 실행은 make {파일명} 을 입력해 컴파일한 후, 컴파일의 결과물로 만들어진 실행가능 한 파일을 열어줌으로써 이루어진다.

make'전처리', '컴파일링', '어셈블링', '링킹' 의 과정을 거쳐 컴파일의 과정을 자동으로 처리해준다.

  • 전처리(precompile) : #으로 시작하는 C소스 코드는 실질적인 컴파일 이전에 무언가를 실행하라는 표시인데, #include는 다른 파일의 내용을 포함시키라고 알려주는 역할을 한다.
  • 컴파일(compile) : C코드를 어셈블리어라는 저수준 언어로 만든다. 컴파일러는 어셈블리로 변환함으로써 컴퓨터가 이해할 수 있는 언어와 최대한 가까워진 프로그램으로 만들어준다. 컴파일이라는 용어는 소스 코드에서 오브젝트 코드로 변환하는 전체 과정을 통틀어 일컫기도 하고, 구체적으로 전처리한 소스 코드를 어셈블리 코드로 변환시키는 단계를 말하기도 한다.
  • 어셈블(assemble) : 어셈블리 코드를 오브젝트 코드로 변환시키는 것이다. cpu가 이해할 수 있는 명령어 형태인 binary (0 과 1)로 바꾸는 작업이다.
  • 링크(link) : 라이브러리를 포함해 컴파일 대상인 파일이 두 개 이상으로 이루어져, 하나의 오브젝트 파일로 합쳐져야 한다면 링크 과정이 필요하다. 링커는 여러 개의 다른 오브젝트 코드 파일을 하나의 오브젝트 코드 파일로 합쳐준다.

배열

메모리

배열은 메모리(컴퓨터의 RAM)의 사용방식과 밀접한 연관이 있다.
C에는 아래와 같은 여러 자료형이 있고, 각각의 자료형은 서로 다른 크기의 메모리를 차지한다.

  • bool: 불리언, 1바이트
  • char: 문자, 1바이트
  • int: 정수, 4바이트
  • float: 실수, 4바이트
  • long: (더 큰) 정수, 8바이트
  • double: (더 큰) 실수, 8바이트
  • string: 문자열, ?바이트

0개의 댓글