본문 바로가기

Web Development/CS

[CS50] Week2: 컴파일링, Array, String

소스코드 -> 컴파일러 -> 머신코드

 

code hello.c   // 소스코드 파일 생성
make hello     // 컴파일
./hello        // 코드 실행

 

실제 컴파일링 과정

 

(1) Preprocessing (전처리 단계):

  • 소스 코드에서 주석 제거, 매크로 확장 등의 작업을 수행.
  • 전처리기는 #로 시작하는 지시문을 처리하여 소스 코드 수정.

(2) Compiling (컴파일링):

  • .c 파일을 컴파일러를 사용하여 목적 코드인 어셈블리 코드로 변환.

(3) Assembling (어셈블링):

  • 어셈블러를 사용하여 목적 코드를 기계어 코드로 변환.

(4) Linking (링킹):

  • 여러 목적 코드 파일과 라이브러리를 결합하여 실행 파일 생성.
  • 링커가 최종적으로 실행 가능한 프로그램을 만듦.

 

 

배열, 문자열

-문자열은 실제로 char의 배열일 뿐임

-문자열은 NUL이라고 불리는 특별한 캐릭터인 '\0'으로 끝남

왼쪽은 char로 표현했을 때, 오른쪽은 decimal로 표현했을 때

 

string을 이렇게 표현할 수 있음

 

#include <cs50.h>
#include <stdio.h>

int main(void)
{
    string s = "HI!";
    printf("%c%c%c\n", s[0], s[1], s[2]);
}