반응형
저번 시간에는 배열을 포인터를 이용해서 설명을 했습니다.
https://hanglestocks.tistory.com/64
이번 시간에는 저번 시간에 배운 내용에서 조금 더 추가해서 말해보겠습니다.
정수나 실수 또는 문자만 배열을 사용하여 나타낼 수 있는 것이 아닙니다. 포인터 변수형을 사용하여 배열로 나타낼 수도 있다. 이 때는 배열안에 주소 값들이 저장되게 됩니다.
이 포인터 배열은 문자열을 처리할 때 자주 사용합니다. 문자형 배열과 메모리 사용 효율에서 차이가 나기 때문입니다.
예를 들어 문자형으로 배열을 사용하게 된다면 가장 긴 단어에 맞춰서 배열을 설정해주어야합니다.
char Name[3][6]={"jinwoo","minsu"."mandu"}
jinwoo가 6글자니까 이런식으로 이차원 배열을 통해 문자형으로 만들 수 있습니다(x) 이거 안됩니다!!!
왜냐하면 끝에 개행 문자가 들어가야되므로 6+1=7 적어도 [3][7]만큼의 배열이 와야됩니다.
그러나 포인터 배열을 사용하게 되면 각각의 문자열들은 각각 임의의 메모리에 저장되고, 컴파일러가 알아서 저장시킵니다.
char* Name1[6]={"jinwoo","dobu","gogi"} 이게 무슨 뜻이냐면 요런 느낌으로 Name이라는 포인터 변수를 만들고, 여기다가 주소를 한 개씩 넣어주는 것입니다.
그리고 포인터 배열을 이용한 문자열에서 첫번째 문자 'j'의 주소가 Name1[0]의 주소가 됩니다. 즉 이 방식을 쓰면 메모리의 낭비가 없습니다.
반응형
'코딩공부 > C++기초' 카테고리의 다른 글
객체프로그래밍 1주차 C++ (Escape sequence) 5 (0) | 2024.03.06 |
---|---|
객체프로그래밍 1주차 C++(연산자) 4 (0) | 2024.03.06 |
객체 프로그래밍 C++(포인터를 이용한 배열1) (0) | 2024.03.06 |
객체 프로그래밍 C++(포인터를 활용한 스왑) (0) | 2024.03.06 |
객체 프로그래밍 C++ (포인터 변수, 이중 포인터 변수) (0) | 2024.03.06 |
댓글