혼자 공부하는 C ( 6주차 )

silver_bean·2022년 2월 27일
0

혼공단

목록 보기
11/16

잡담

챕터가 남았는데 마지막 미션이라는게 아쉽다..

6주차 미션

  1. 포인터의 핵심 내용을 정리하고 공유하기
  2. 나만의 언어로 포인터 정리하기

1. 포인터의 핵심 내용을 정리하고 공유하기

  1. 포인터란
    : 메모리를 사용하는 또 다른 방법
    // 각 변수에 해당하는 메모리를 접근 (시작 주소값 저장)
    char *pc;
    int *pi;
    double *pd;
  • 주소 연산자 &
    변수가 할당된 메모리의 위치

    int a;	// 정수형 변수 a
    &a;		// a의 메모리 시작 주소 값
  • 간접 참조 연산자 *
    포인터로 가리키는 변수를 사용할 때

    *pi = 10;	// pi 변수의 포인터를 사용
    			// pi 포인터가 가리키는 변수를 사용
  1. 주소와 포인터의 차이
  • 포인터
    : 주소를 저장하는 일정한 크기의 메모리 공간
    변수처럼 다른 주소를 저장하거나 포인터끼리 대입 가능
    하지만 대입 연산 기준이 엄격함

  • 주소
    : 변수에 할당된 메모리 저장 공간의 시작 주소 값

  • 포인터의 크기
    : 주소의 크기와 같음

  • 포인터의 대입 규칙
    1) 포인터는 가리키는 변수의 형태가 (자료형) 같을 때만 대입
    2) 형 변환을 사용한 포인터의 대입은 언제나 가능

  • 포인터의 주요 기능
    : 함수 간에 효과적으로 데이터를 공유하는 것
    ex) 메모리에 직접 접근하는 경우, 동적 할당한 메모리를 사용하는 경우

2. 나만의 언어로 포인터 정리하기

Lang 시의 주민 주소록 번호
.
.
.
11. 코드 아파트 101동 207호 사는 아무개
12. 코드 아파트 105동 310호 사는 파파야
13. 컴파일로 1024길 10에 사는 모모 
.
.
.

변하지 않는 값인 "코드 아파트 --동 --호, 컴파일로 1024길 10" 등을
= 주소

주소를 가지고 있는 "주소록 번호"를
= 포인터

"Lang 주민 아무개씨는 어디 사세요?"
= Lang *11

"컴파일로 1024길 10에는 누가 사나요?"
= &13

"파파야씨는 이사가고 파파야씨 사는 곳에 무무개씨가 이사왔어요"
= *12 = 무무개

"Java 시로 이사간 파파야씨 주소를 찾을 수 있나요?"
= (자료형 에러)
= Lang 시 주소록에 없기 때문에 찾을 수 없습니다.

(비유가 적절하지 않을수도 있지만..)
변수를 각각의 주민
주민이 살고있는 곳을 표시하는 문자를 주소
주소를 담고있는 주소록포인터
정도로 생각하면서 포인터를 이해했습니다..!

0개의 댓글