다시 오신 걸 환영해요 이번 강의에서는 이전 과제의 데모를
통해 포인터 구문을 살펴볼 텐데요 포인터의
개념은 포인터에 주소를 부여하고
포인터를 위한 출력을 보여주는 것이죠
코드 블록을 불러오죠 새 프로젝트를 생성하겠습니다 새 C# 프로젝트요
포인터 베이식이라 부를 겁니다 포인터 베이식을 작업할 테니까요
이런 건 다 할 줄 알아요 콘솔 애플리케이션을 선택하고
C#이 있는지 확인합니다 이것을 포인터 베이식이라고
하죠
이 포인터 개념은 정말 중요해요
천천히 시작해서 점점 나아갈 거예요
자, 보세요 이게 메인 요리예요
우리가 원하는 건 정수 변수 하나와 포인터
변수 하나를 만드는 거죠
둘 다 초기화해야죠
그래서 가장 먼저 정수 변수를 생성해 그걸
숫자나 num이라고 이름 짓겠어요
이걸 150으로 초기화할게요
포인터 변수를 생성하려면 형식이 같아야 해요
포인터를 만들려면 데이터 타입만 하면 돼요 선언에 별표도 넣고요
그런 다음 이걸 포인터 번호의 pnum이라고 부르죠
보통 변수를 시작할 때 p 접두사로 포인터를 넣죠
포인터를 생성할 때 항상 Null로 초기화하는 게 좋아요
Null은 특별한 키워드로 포인터가 아무것도
가리키지 않는다는 뜻이에요
두 변수 모두 초기화되면
넘 정수와 넘 정수 포인터가 있는데 포인터에 뭔가를
할당하고 싶어요
지금 포인터는 메모리에 있는 어떤 것도 가리키지 않고 있거든요
거기에 포인터를 할당하는 게 뭐든
메모리 위치를 갖도록 해야죠 메모리
할당요
이 경우 그걸 넘버원 할당하면 넘버원은
6번째 줄에 메모리를 할당받은 정수예요
C는 모든 변수 선언에 대한 메모리를 자동으로
할당하죠
7라인에 있는 포인터도 포인터를 저장하기 위해 메모리를 할당했어요
가리키는 것에 대해 메모리를 할당받았다는 의미는 아니에요
주소 값인 pnum에 서명하려면
pnum은 ampersand와 같다고
하면 돼요 연산자의 주소죠
num의 주소를 할당하려는
거예요
Num은 이미 할당된 메모리가 있고 우린 그걸 선언했죠
9번째 줄은 넘버 주소를 포인터에 할당하고 있어요
아주 간단해요
포인터를 생성하고 주소를 할당할 때 동적
메모리도 생성해서 할당할 수 있어요
하지만 그건 다른 훈련이죠 이
경우엔 이미 변수가 생성됐어요 그 변수의 값을 가리킬 거예요
눔의 주소를 정해야 해요
프린트하고 나면 할당도 완료했고 모든 것을 초기화했어요.
이제 정보를 출력할게요
printf를 이용해 먼저 pnum 주소의
값을 프린트하겠다고 하죠
주소의 pnum 값은 무엇일까요?
pnum 주소요 여기서 포인터의
주소를 말할 수
있어요 p라고 하죠 그런 다음 우리가 할 일은 여기에
포인터의 주소를 입력하는 거예요
주소는 pnum으로 하고요
이렇게 하면 메모리를 할당하고 있는 포인터의 주소를
알 수 있어요. 포인터의
값이 아니에요 포인터의 값은 주소이기도 합니다 num의 주소이기도 하죠
여기서 먼저 num도 출력하죠 여기서 num
주소 is를 프린트하죠
주소도 출력해야죠 %p라고 하세요
그런 다음 num의 주소의
주소를 입력하죠
숫자도 pnum 값과 일치해야 하고요
pnum 주소는 달라요 메모리에서 포인터거든요
이제 pnum 값을 출력할게요 아니,
pnum 주소라고 해야겠네요
그런 다음 pnum의
값도 프린트할 거예요
변수 그리고 이것도 주소가 될 겁니다 이건
pnum이 되겠죠
마지막으로 디스플레이할 것은 pnum이
가리키는 값을 디스플레이하는 거예요
pnum이 뭘 가리키고 있는지를요
이건 사실 이게 가리키는 게 정수
형식이 될 거예요 이건 %d예요
이걸 읽을 수 있도록 줄 피드를 추가하죠
그 값을 얻는 방법을 가리키고 있는 건 인다이렉션 연산자예요
별표와 포인터 이름을 입력하세요
그럼 값이 뭘 가리키고 있는지 말해주죠 150이어야 해요
다시 한 번 라인 11에서 NUM
주소를 프린트하고 있어요
어떤 숫자나 16진수일 거예요
12번째 줄에서 pnum 주소를 프린트해요
7번째 줄에 할당된 거죠 pnum
포인터를 저장해야 하니까요
그런 다음 num의 주소인 포인터의 값을 출력하죠
pnum 주소를 출력할 때 &&를 써야 해요
그런 다음 인다이렉션 연산자를 이용해 Pnum이
가리키는 게 뭔지 값을 출력하죠
이제 이걸 빌드하고 실행해보죠
그럼 모든 값을 볼 수 있을 거예요
넘버 주소는 메모리의
이 번호는 0060FF0C예요
pnum 주소는 0060FF08로
바뀌고요
넘버원 주소인 pnum 값이 첫 줄과 일치해야 해요
FFOC가 되죠
pnum이 가리키는 값은 150이에요
포인터는 세 가지 값을 가질 수 있어요 주소, 또 다른 주소를
의미하는 포인터의 값 그리고 그 주소가
가리키는 것의 값이죠
ampersand는 항상 메모리에
주소를 남기죠
Pnum에 주소가 있어요 포인터의 이름만 말해도
프린트할 수 있어요
그리고 가리키는 값을 얻기 위해서는 Inirection 연산자를
이용합니다 *를 이용하면 150이라는 값을 얻을 수 있죠
이게 포인터의 기본이에요 구문에 익숙해지는 거요
연산자의 주소를 언제 사용하고 언제 인다이렉션 연산자를
사용할지를요 그리고 포인터의 개념을 설명하고 포인터가 주소의 값을 포함하는
방법을 설명합니다 포인터의 값은 주소를 의미하죠
그러니 이 구문을 이해해 보세요
포인터는 아주 중요한 개념이에요 고마워요