Computer Science
탄탄한 기반 실력을 위한
전공과 이론 지식 모음
Today I Learned!
배웠으면 기록을 해야지
TIL 사진
Flutter 사진
Flutter로 모바일까지
거꾸로캠퍼스 코딩랩 Flutter 앱개발 강사
스파르타코딩클럽 즉문즉답 튜터
카카오테크캠퍼스 3기 학습코치
프로필 사진
박성민
임베디드 세계에
발을 들인 박치기 공룡
임베디드 사진
EMBEDDED SYSTEM
임베디드 SW와 HW, 이론부터 실전까지
ALGORITHM
알고리즘 해결 전략 기록
🎓
중앙대학교 소프트웨어학부
텔레칩스 차량용 임베디드 스쿨 3기
애플 개발자 아카데미 1기
깃허브 사진
GitHub
프로젝트 모아보기
Instagram
인스타그램 사진

TIL

[250819] Day 9 - 개인교사 데뷔전

sm_amoled 2025. 8. 20. 23:25

들어가며

오늘은 아침에 운동도 다녀왔다! 재활치료 겸 다녀왔는데, 그래도 발이 살살 아픈게 조금 쉬면서 츄라이를 해봐야겠다.

수업이 끝나고나서는 클래스메이트한테 거의 1시간 반동안 개고생에 있는 포인터 연산을 수행하는 과정에 대해서 열심히 1대1로 수업을 해줬다. ㅋㅋㅋㅋ 나름 열심히 꿀팁도 알려주고 연습문제도 내면서 개념을 전달했는데, 잘 되었는지는 모르겠다. 이번주에 시험 치면 결과로 알 수 있겠지. 후후.

내일도 수업할 예정인데, 인증샷으로 남기게 칠판에 쓴 걸 좀 찍어놔야겠다.

RN 프로젝트도 얼른 끝내야하는데,,,

오늘의 키워드

모듈?

  • 위 그림에서 모듈은 c언어 파일 하나를 말함.
  • 각 파일을 별도로 컴파일하면 파일마다 obj 파일이 나옴.
  • 오브젝트 파일들을 링크하여 실행파일로 만듦.
    • 링크 - 미정의된 심볼들을 정의된 심볼들과 연결
    • 메모리주소 할당
  • 모듈에 대한 엄격한 정의는 없는데, 일반적으로 모듈은 [ C파일 + 파일 앞에 작성된 헤더들의 내용 ] 를 말함.
    • 이후에 링크 과정에서 파일들을 합친다고 생각하면 됨!

포인터의 연산

포인터 주소가 같더라도 포인터의 타입이 다르면 포인터 연산의 결과가 달라진다.

int main(void) {
    int ary[3][4] = { 1,2,3,4,5,6,7,8,9,10,11,12 };

    // 아래 4개의 포인터들은 모두 동일한 주소를 가리킴
    printf("%x %x %x %x\n", ary, ary[0], *ary, &ary);

    // 그러나 타입이 서로 다르기 때문에 연산 결과는 달라질 수 있음.
    printf("%x %x %x %x\n", ary+1, ary[0]+1, *ary+1, &ary+1);
    // ary + 1    => ary + 16
    // ary[0] + 1 => ary + 4
    // *ary + 1   => ary + 4
    // &ary + 1   => ary + 48 

    return 0;
}

개고생

????

여기에 대가리를 박다가 방법을 좀 찾아낸 것 같다…!

a[i] == *(a + i)
  • 배열 참조와 포인터 참조 방식 간의 변환 방식 적용하기
  • 참조연산자 *을 찍는다고 무조건 값 가지러 출발하는게 아님!
  • * 을 찍으면 한 차원 아래로 내려감 ⇒ 이 경우에는 포인터 연산 시 단위가 줄어든다고 생각하면 됨.
  • 반대로 & 을 찍으면 한 차원 위로 올라감 ⇒ 이 경우에는 배열 첫 요소 → 배열 전체를 가리킴 등으로 연산 시 단위가 커진다고 생각하면 됨.
320x100