C언어 32강 포인터

Поделиться
HTML-код
  • Опубликовано: 22 дек 2024

Комментарии • 16

  • @justinoh6494
    @justinoh6494 4 года назад +3

    이 분 강의는 처음 부터 천천히 끝까지 보십시요.
    진정 초보자를 위한 강의 입니다. 저는 책에서 이해가 가지 않는 대부분 내용을 이 분의 강의를 들으면서 정리가 되었습니다. 프로그래밍에서 왜 C언어가 중요한지 진정으로 알게 되었습니다.^^
    강의 잘 들었습니다. 그리고 감사합니다.^^

  • @허상국-r3y
    @허상국-r3y 2 года назад

    안녕하세요!정말 섬세하게 가르쳐주셔서 감사합니다!따라했는데 f11로 메모리 주소를 콘솔창에서 출려받아 주소창에 입력 후 엔터를 쳤는데 메모리 값이 안나오고 ???????가 가득차서 나오는데 뭐가 원인인지 잘 모르겠네요!가르쳐주시면 감사하겠습니다. 코로나에 항상 조심하시고 건강하시기를 바랍니다

  • @smk7363
    @smk7363 5 лет назад +1

    이보다 더 포인터 설명을 잘하는 강의가 있을까요 ..? 잘들었어요!

  • @uns9472
    @uns9472 3 года назад

    ㄹㅇ 진짜 이해 잘가게 잘 가르침
    근데 님 산 속에서 영상 찍음??

  • @sehnkim
    @sehnkim 8 лет назад

    그리고 잊어버리기 전에 한가지 궁금한게 있는데요.. 한개의 함수에서 리턴 값이 잇을 경우에 그 함수가 스택에서 없어지고 그 후에 리턴값이 메인함수의 sum 이라는 변수에 저장되는 식으로 설명을 하셨는데, 그 함수의 리턴값은 임시적으로 어디에 저장이 되었다가 sum으로 카피가 되는지요? 감사합니다.

    • @jinhanaura
      @jinhanaura 6 лет назад

      제가알기로는 어디 저장되는 것 없이 pop되면서 sum으로 리턴되는것으로 알고 있습니다. 즉 그냥 저장개념이 아니라 바로 대입개념과 같은것같아요

  • @sehnkim
    @sehnkim 8 лет назад

    올렸던 글도 답글도 사라졌네요.. ㅠㅠ
    그러면 함수의 각 변수에 대해서도 전역 변수에 대해서도 각각 심벌 테이블이 형성이 되고, 전역 변수의 심벌은 한번 생성이 되면 프로그램 종료시까지 계속 가지만, 지역 변수는 심벌 테이블에서 각 변수가 생겼다 지워졌다를 반복한다는 거죠?
    그렇다면 이러한 심벌 테이블은 어디에 저장이 되나요? 그리고 어떠한 형식으로 저장이 되나요? (해쉬맵?)
    감사합니다.

    • @ahracho746
      @ahracho746  8 лет назад +1

      답변이 늦었습니다 죄송합니다. 네 심볼테이블은 코드가 메모리에 얹혀질 때에 코드 segment 부분에 생성되고 일반적으로 해쉬테이블 형태를 사용한다고 합니다! 그리고 함수의 리턴값 같은 경우는 보통 레지스터(휘발성/단기성 메모리라고 생각하시면 됩니다)에 저장해 놓고 리턴 후 돌아간 지점에서 값을 꺼내서 사용합니다. 질문에서 sum으로 카피가 되느냐고 하셨는데, 레지스터에 저장된 값을 sum 변수의 메모리에 복사하는 것이라고 보시면 됩니다. 레지스터는 정말 임시적으로 저장하기 위한 공간이다보니 리턴이 있는 함수의 리턴값을 변수에 따로 저장하지 않게 되면 그대로 사라져 버리게 되는 것이죠.

    • @sehnkim
      @sehnkim 8 лет назад +1

      감사합니다. 레지스터에 저장되는군요.
      "심볼테이블은 코드가 메모리에 얹혀질 때에 코드 segment 부분에 생성"된다고 하셨는데 조금 이해가 안되는 부분이 있습니다. 이곳에 보면 en.wikipedia.org/wiki/Code_segment 이런 내용이 있는데요, "The code segment in memory is typically read-only and has a fixed size," 어떤 함수가 실행되고 나면, 그 안의 변수들은 심볼테이블안에서 사라지는게 아닌가요? Stack에서는 생기고 없어지고 하는데, 심볼테이블 안에서는 각 변수들이 컴파일 때부터 생성되는 것인가요? 주소는 할당이 안되어 있는 채로요? 왜냐면, 그때는 함수가 실행이 안되어 그 안의 주소는 모르니까요?
      결국 질문은 code segment는 read only인데, 그러면 컴파일 타임 때부터 함수들의 각 변수들이 이미 설정이 되어 있는 것인지? 그렇다면 함수 실행시 변화되는 주소들은 심볼테이블에서 어떤 식으로 관리되는지가 궁금합니다. 많은 도움 감사합니다.

    • @ahracho746
      @ahracho746  8 лет назад

      컴파일 타임에 code segment에 심볼테이블이 올라갈텐데요, 심볼테이블에는 정확히 메모리 주소가 여기다 이렇게 적혀있는 게 아니라 offset이 적혀있습니다. 그래서 함수 A의 스택이 생성되면 시작점을 기준으로 offset을 계산하면 되니까 컴파일 시점에 함수 A의 변수 a가 정확히 어느 메모리에 저장이 될지 신경 쓰지 않아도 되는거죠.
      그리고 질문 중에 "함수가 실행되고 나면, 그 안의 변수들은 심볼테이블안에서 사라지는게 아닌가요?" 부분은 심볼테이블 안에서 변수들이 사라지는 것이 아니고, 심볼테이블은 주소록 개념이고 실제로 생겼다 사라졌다 하는 것은 스택에 있는 실제 변수겠죠? 주소록에 주소는 그대로지만 그 주소의 집이 생겼다 없어졌다 하듯이 말이죠 ㅎㅎ

    • @sehnkim
      @sehnkim 8 лет назад

      네네.. 알겠습니다. 컴파일할때 처음에 모든 함수들의 상대적인 offset이 코드 세그멘트에 들어가면, 추후에 함수안의 각 변수들의 주소가 정해진들 상대적인 오프셋을 변경할 필요는 없겠네요. 스마트하네요.. ㅎㅎㅎ
      값진 조언들 감사합니다. :)

    • @sehnkim
      @sehnkim 8 лет назад

      혹시 여담이긴 하지만, merge sort 이런건 강의 안하시나요? 이해가 쏙쏙 되어서 너무 좋아서요. 제가 요새 공부하는 부분인데 질문이 하나 있는데 여쭤봐도 될까 싶어서요.. 감사합니다.

  • @바다-j4j
    @바다-j4j 4 года назад

    감사합니다.