다시 오신 걸 환영해요 또 다른 과제가 있어요
이번 과제에서는 포인터 산수에 대해 배울 거예요
포인터 산수는 아주 멋진 개념이에요
표기법 용어예요
배열이 포인터와 어떻게 관련됐는지
보여주죠 아주 간단한 구문으로 아주 쉽게
배열을 트래버스할 수 있어요 여러분의 코드 줄을 줄이는 거죠 정말
깔끔한 개념이에요
그래서 포인터 산수에 대해 모든 걸 배우게 되죠
상수 Modifier에 대해서도 좀 더 배우고요
이번 과제에서는 여러분의 이해를 시험할 프로그램을
작성해야 합니다 포인터 산수와 변수자를 이해해야 하죠
이전 강의에서 이 두 가지 개념을 배웠죠
문자열의 길이를 계산하는 함수를 작성해 주세요
요구 사항은 함수가 매개 변수 상수 char 포인터로 받아들여져야 한다는 거죠
상수 char 포인터는 포인터가 가리키는 것의 값을
바꿀 수 없다는 의미입니다
길이로는 바꾸지 않죠
이 함수는 포인터 연산을 통해서만 스트링의 길이를 알 수 있어요
str 길이 기능은 쓰지 마세요 포인터 산수를 사용하세요
제가 이 함수를 구현하는 방법은 포인터
끝의 주소를 알아내는 거예요
포인터의 길이와 같죠
하지만 마지막 문자열의 주소와 포인터를 얻는 방법은 while 루프를
작성할 수 있어요
while 루프는 null 터미네이터 문자까지 갈 수 있어요
null 터미네이터 문자는 int로
나타나요
Null 터미네이터는 사실 0이에요 while 루프를 작성할
수 있어요 while 루프는 모든 조건에 포인터를
속이는 걸 포함해야 하죠
d 참조 포인터의 값이 0이면 루프를 빠져나와 Null
터미네이터가 되니까요
포인터 전체를 다 살펴보세요
그걸 살펴보는 동안 포인터를
계속 증가시키세요
이제 문자열의 끝을 가리키는 포인터가 생겼네요
그런 다음 길이를 계산하려면 2포인터만
빼면 돼요
전달된 포인터는 문자열의 시작을 의미합니다
그리고 여러분이 함수에서
만든 포인터는 문자열의 끝을 가리키죠
문자열 포인터의 끝을 문자열 포인터의 시작에서
빼버리면 문자열의 길이를 알 수 있어요
즉, 포인터 1을 1번씩 증량해서
마지막 주소를 완성하고 점 연산을 이용해서
각 포인터를 빼는 거예요.
이게 아마 뺄셈을 점 연산을 사용하는 가장
유효한 방법일 거예요 보통 포인터 2개를 추가하지 않죠
왜 주소를 2개 추가하겠어요?
주소 두 개를 빼면 두 요소가 얼마나 멀리 있는지 알 수
있죠 그건 말이 되지만
추가하면 말이 안 돼요 다시 말씀드리지만 함수는 점 연산을
통해서만 스트링의 길이를 알 수 있어요
함수에 로컬 포인터를 만들어 매번
포인터를 증가시켜 null 터미네이터, 심플 while
루프가 보일 때까지 가세요
엔딩 주소가 있으면 이미 시작 주소가 있으니
포인터 2개를 빼면 길이가 나오죠
함수에서 그 길이를 int로 반환해야 해요
실제 길이를 출력할 수 있어요
이 할당은 점 연산과 상수 Modifier
사용법을 알려줍니다 그게 가리키는 실제 값을 바꾸고
싶지 않기 때문이죠 포인터
2개를 빼는 것도요 while 루프를 이용해
포인터 값을 보고 null 문자를 정할
수 있어요 행운을 빌어요
해결책은 다음 강의에서 알려 드리죠 고마워요