본문 바로가기
cs/CS50

6: 자료구조-1(malloc과 포인터 복습)

by 이쟝 2021. 12. 11.
int main(void)
{
    int *x;
    int *y;

    x = malloc(sizeof(int));

    *x = 42;
    *y = 13; 
}

 

- main 함수 안에 첫 두 줄에서는 포인터 x와 y를 선언

- x에 malloc 함수를 이용해서 int 자료형 크기(4바이트)에 해당하는 메모리를 할당

- *은 역참조 연산자로 그 주소로 가라는 의미!

- 다음에는 x와 y 포인터가 가리키는 지점에 42와 13을 저장함, 여기서 y는 포인터로만 선언되었을 뿐이지, 어디를 가리킬지에 대해서는 아직 정의가 되지 않았기 때문에 *y = 13은 문제가 됨

- 초기화되지 않은 y는 프로그램에서 임의로 가리키고 있는 곳에 13이라는 값을 저장하는 것이 오류를 발생시킴

-> y = x;라는 코드를 더해주면 y는  x가 가리키는 곳과 동일한 곳을 가리키게 돼서 x가 가리키는 곳에 동일하게 13으로 저장될 것! 42가 먼저 x에 들어오고 그다음에 13이 덮어씀

 

 

https://www.boostcourse.org/cs112/joinLectures/41307

 

모두를 위한 컴퓨터 과학 (CS50 2019)

부스트코스 무료 강의

www.boostcourse.org