728x90

요즘은 학원을 다니며 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]




728x90
Posted by 정망스
,


맨 위로
홈으로 ▲위로 ▼아래로 ♥댓글쓰기 새로고침