728x90

기본적인 포인터 개념은 생략.

 

 

1.

문자열은 cosnt 영역에 생성되므로 문자열을 받는 변수도 const 타입이여야 한다.

2.

문자열 마지막에는 NULL이 포함되어 문자개수+1만큼의 char배열이다.

 

3.

포인터 변수지만 문자열 포인터 변수는 cout-endl에 value가 찍힌다.

가장 혼란스럽게 한부분이다. cout-endl 내부원리를 알아야 정확히 이해하겠지만

추론하기로는 char* 변수는 cout-endl에서 null 문자를 메모리에서 읽을까지 값을 출력한다.

보통은 char*변수에 문자열을 담기 때문인것 같다.

덕분에 char*에 char형 데이터를 넣게되면 null 포인트를 찾지 못하고 외계어가 출력된다.

 

그렇다면 문자열 주소를 출력하려면 &dd?

 

그럼 dd 도 이미지 주소를 가리키므로 주소의 주소를 출력하게된다. 실제 dd가 가리키는 주소와 출력된 주소가 다른걸 확인할 수 있다.

 

4.

문자열 포인터값은 문자열 가장 첫인덱스 주소값을 나타낸다.

그럼 주소값++ 이런식으로 다음 인덱스에 접근해서 문자를 바꿀수 있나?

없다. 애초에 문자열은 const 따라서 포인터변수도 const 따라서 변경 불가.

 

5.

꿀팁.

디버깅 중에

위와 같이 메모리 창을 띄워놓으면

내부적으로 메모리야 어떻게 쓰이고 어떤값이 들어갔는지 확인할 수 있다!

이걸 모르고 console에 찍히는 값만 보고 추론하면 답이 없다.. ㅜ

728x90

+ Recent posts