게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
[본삭금] C 배열 포인터와 포인터 배열 이차 포인터 질문좀 드리겠습니다
게시물ID : programmer_9244짧은주소 복사하기
작성자 : kealice
추천 : 0
조회수 : 1778회
댓글수 : 4개
등록시간 : 2015/04/10 00:22:48
옵션
  • 본인삭제금지
2015-04-10_0-01-11.png

지금 계속 삽질을 하고 있는데 도저히 이해가 안가서 질문 드립니다 ㅠㅠ..

포인터를 배운지 얼마 안되서 좀 신기해 하고 있는데..

어떤 프로그램을 짜던중에 갑자기 '2차 배열을 가리키는 포인터의 배열이 있을까?'이게 궁금해져서 계속 검색하다 보니..

http://pelex529.blogspot.kr/2009/01/2.html 이렇게 배열 포인터라는 것과 등가 포인터라는 것을 알게 되었습니다.

http://unixwiz.net/techtips/reading-cdecl.html여길 통해서 정말 별 이상한 선언을 할 수 있다는 것도 알았고, 이를 이용하면

2차 배열을 가리키는 포인터의 배열이 있을 수 있겠다는 생각이 들었습니다.

일단 이 문제는 나중으로 미루고.. 지금 당면한 문제는..

'배열 포인터를 포인터 연산 형식으로 쓰고 싶다!' 입니다. 무슨 얘기냐 하면

int a[5] 라는 배열이 있으면

*ptr = a를 통해 a의 주소를 ptr에 담습니다. 여기서 임의의 i(i < sizeof(a))에 대해서 ptr + i를 하게 되면 우리는 a배열의 모든 요소를 득템할 수 있는데

배열 포인터를 통해서도 하고 싶은 겁니다.

위의 사진에서 53번 행부터가 그 시도인데..

일단 52번 까지는 제가 예상했던 대로 결과가 나왔습니다. (사실 이것도 이해가 잘 안가기는 합니다. arr2[0]이면 arr2[0][0]의 주소를 가리켜야 하는거 아닌가요? 크기는 왜 6이고 값은 또 왜 이러는지....)

2015-04-10_0-03-25.png
(일반 배열과 포인터를 구문하기 위해 일반 배열이나 변수는 값을 value로, 포인터가 들어가 있으면 그냥 reference로 나타냈습니다.)

왜 (c + 1)[0] 이 3이 나오는지 잘 모르겠습니다;;

unnamed0.png

c라는 배열이 arr2를 가리킨다면 (c + 1)[0]이면 arr2[1][0]와 같은 의미여야 하지 않나요??

c[0][1]이 arr2[0][1]인 것처럼 말이죠. []이 연산자에 대해 알아 봐야 할까요..?

지금 더블 포인터도 모르겠는데 그것까지 질문하면 너무 많겠죠??;;;

요약합니다.

 Q1. c는 크기가 2인 char형 배열을 가리킬 수 있는 포인터 입니다. 이를 포인터 연산을 통해 각 요소를 접근하고 싶은데 왜 (c + 1)[0]이 arr[1][0]이 안되는가?
 
 Q2. 그렇다면 []연산자를 사용하지 않고 배열 포인터 c를 포인터 연산만을 사용해서 arr2[1][1]과 같은 각 요소를 접근할 수 있는 방법은 없는가?

이렇게 입니다.
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호