객체 프로그래밍 C++(포인터를 이용한 배열2)
본문 바로가기
코딩공부/C++기초

객체 프로그래밍 C++(포인터를 이용한 배열2)

by 지누이야기 2024. 3. 6.
반응형

저번 시간에는 배열을 포인터를 이용해서 설명을 했습니다.

https://hanglestocks.tistory.com/64

 

이번 시간에는 저번 시간에 배운 내용에서 조금 더 추가해서 말해보겠습니다.

 

정수나 실수 또는 문자만 배열을 사용하여 나타낼 수 있는 것이 아닙니다. 포인터 변수형을 사용하여 배열로 나타낼 수도 있다. 이 때는 배열안에 주소 값들이 저장되게 됩니다.

 

그림 1

 

이 포인터 배열은 문자열을 처리할 때 자주 사용합니다. 문자형 배열과 메모리 사용 효율에서 차이가 나기 때문입니다.

 

예를 들어 문자형으로 배열을 사용하게 된다면 가장 긴 단어에 맞춰서 배열을 설정해주어야합니다.

 

char Name[3][6]={"jinwoo","minsu"."mandu"} 

 

jinwoo가 6글자니까 이런식으로 이차원 배열을 통해 문자형으로 만들 수 있습니다(x) 이거 안됩니다!!!

 

왜냐하면 끝에 개행 문자가 들어가야되므로 6+1=7 적어도 [3][7]만큼의 배열이 와야됩니다.

 

그러나 포인터 배열을 사용하게 되면 각각의 문자열들은 각각 임의의 메모리에 저장되고, 컴파일러가 알아서 저장시킵니다.

 

char* Name1[6]={"jinwoo","dobu","gogi"}  이게 무슨 뜻이냐면 요런 느낌으로 Name이라는 포인터 변수를 만들고, 여기다가 주소를 한 개씩 넣어주는 것입니다.

 

그림 2

 

그리고 포인터 배열을 이용한 문자열에서 첫번째 문자 'j'의 주소가 Name1[0]의 주소가 됩니다. 즉 이 방식을 쓰면 메모리의 낭비가 없습니다.

반응형

댓글