요즘은 학원을 다니며 c++을 본격적으로 배우고있다.
자바나, 다른 웹언어를 더 많이 공부한 나로썬 종종 잘이해가 안가거나(본래 이해력이 많이 부족...)
멈칫 멈칫 거릴때가 너무 많다; 서론은 여기까지고..
특히 요새 애먹고 있는부분이 이 포인터 부분이다.
아직까지도 완벽히 다 이해한건 아니지만 요즘들어 배열과, 포인터를 많이 쓰던도중
이번 글의 제목과 같이 "포인터배열", "배열포인터" 앞뒤 순서가 바뀐 이 둘의 차이가 궁금해졌고..
나 자신에게 이런거같다라고 정의를 하고 글에 끄적끄적 적어본다... (뭐 틀릴수도 있음... 양해바람)
(포인터)(배열) = 포인터배열은 포인터로 이루어진 배열이라는 뜻
(배열)(포인터) = 배열포인터는 배열을 가리키는 포인터라는 뜻으로 보면 될듯하다.
그렇다면 이제 간단한 코드로 한번 보자.
ex)포인터배열
char a[10] -> char형 변수 word[0],word[1].... word[9] 총 10개의 변수를 선언한것이다.
char* str[10] -> char형 포인터 변수 *str[0], *str[1]..... *str[9] 총 10개의 포인터 변수를 선언한것이다.
여기서 *str[10]을 포인터배열이라고 한다.
ex)배열포인터
char a; -> a는 char형 변수
char a[10]; -> a[10]은 char형 배열
char a[10];
char *str = a; -> a[10]은 char형 배열이고, *str은 a라는 배열을 가리키는 포인터이다.
여기서 *str을 배열포인터라고 한다.
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
2차원 배열을 배열포인터로 가리킬때는 선언방식이 조금 다르다고 한다.
char a[5][10];
char (*str)[10];
str = a;
2차원 배열을 가리키는 배열포인터는 반드시 배열의 크기를 맞춰줘야 한다고 한다.
이유는 포인터가 가리키는 현재 칸에서 다음칸으로 이동하는데 있어서 실제 배열을 이동하는것과 동일하게 이동
해야 하기 때문이라 한다.
ex) str = a[0], str+1 = a[1], ....... str+4 = a[4]
'C++' 카테고리의 다른 글
boost 라이브러리 빌드 설치 [비쥬얼 스튜디오(VS)] (0) | 2014.06.03 |
---|---|
[c++] LinkedList(링크드리스트) vs Array(배열) 비교 (0) | 2014.02.09 |
학원 공부중!.. 모르는것 정리中 (0) | 2014.01.15 |
[DirectX SDK 설치]Visual Studio 2010 디렉터리 관련 설정.. (0) | 2013.11.25 |
[STL] bind2nd / bind1st 란 무엇인가..? (0) | 2013.11.16 |