C 언어 에서 한 배열 과 2 차원 배열 을 가리 키 는 지침 을 직관 적 으로 이해 하 다.

1 차원 배열 과 포인터:
한 배열 과 지침 에 대해 잘 이해 합 니 다.
1 차원 배열 이름:
이러한 1 차원 배열:int a[5];  a 는 배열 이름 으로 우리 배열 의 첫 번 째 주소 이 고 a 는 주소 상수 입 니 다.
먼저 상수 와 변수의 관 계 를 말 해 보 세 요.변수 에 있어 서 상자 로 비유 하 는 것 이 좋 습 니 다.변 수 를 설명 하면 상자 하 나 를 설명 합 니 다.예 를 들 어 우리 가 사과 유형의 상 자 를 열 었 는데 이 변수 에 값 을 부여 하 는 것 은 바로 사과 가 담 긴 상자 에 실제 적 인 사 과 를 넣 는 것 입 니 다.이것 이 바로 변수의 할당 입 니 다. 
배열 에 있어 서 는 같은 유형의 상자 중 한 조 의 사과 상자 로 서로 다른 사 과 를 넣 을 수 있다.
1 차원 배열 공간:
변수 가 설명 되면 우 리 는 컴 파일 러 를 조작 하여 우리 의 C 소스 파일 을 컴 파일 합 니 다.C 는 컴 파일 할 때 우리 의 변수 에 해당 하 는 공간 을 열 어 주 고 배열 에 있어 서 열 린 공간 은 연속 적 입 니 다.   우 리 는 모든 공간 을 저장 장치 라 고 부 릅 니 다.모든 공간 은 자신의 번호 가 있 습 니 다.마치 우리 가 현실 생활 에서 모든 가정 이 자신의 문패 번 호 를 가지 고 있 는 것 처럼 시스템 배열 의 공간 주 소 는 연결 되 어 있 고 우리 의 배열 이름 은 1 차원 배열 의 첫 번 째 주소 이 며 주소 상수 입 니 다.
포인터:
배열 이 연속 적 인 저장 부 를 차지 하고 배열 의 첫 번 째 주 소 는 배열 이름 이 므 로 포인터 변 수 를 통 해 해당 하 는 주 소 를 찾 을 수 있 습 니 다.
포인터 변 수 는 바로 이 상자 가 다른 상자 의 주 소 를 전문 적 으로 저장 하 는 것 입 니 다.우 리 는 배열 의 첫 번 째 주 소 를 우리 에 게 주 는 포인터 변 수 를 줄 수 있 습 니 다.int a[7],*p;p=a;
201657162334919.jpg (396×188)
2 차원 배열 과 포인터 의 이해:
초보 자 들 이 2 차원 배열 과 지침 에 대한 이해 가 모호 하거나 이해 하기 어 려 울 것 같 습 니 다.사실 우 리 는 생활 과 연결 되 어 이 모든 것 이 뚜렷 해 집 니 다.
우 리 는 1 차원 배열 의 사상 을 이해 하여 2 차원 배열 을 이해 합 니 다.1 차원 배열 에 대해 모든 상자 에 구체 적 인 사과,2 차원 배열 이 저장 되 어 있 습 니 다.즉,1 차원 배열 의 내용 에 일련의 상 자 를 보관 하 는 것 입 니 다.그러면 2 차원 배열 을 구성 합 니 다.
이것 은 마치 기차 와 같 습 니 다.기 차 는 많은 불 칸 이 있 고 모든 불 칸 안에 좌석 이 있 습 니 다.그러면 우리 불 칸 의 번호 와 모든 기차 좌석 의 번 호 는 다 릅 니 다.  예 를 들 면 int  a[3][4] ; 3 개의 불 칸,각 불 칸 에는 네 개의 붙 어 있 는 좌석 이 있다.  실제 좌석 의 번호 와 우리 의 불 칸 의 번 호 는 우리 가 구분 해 야 할 것 이다.  우리 의 화차 번 호 는 바로 a[0],a[1],a[2](좌석 의 측면 에서 볼 때)이다.
밖에서 보면 우리 각 화차 의 주소,a+0,a+1,a+2,a 는 한 줄 의 주소,화차 단위 의 주소,a+1 은 다음 칸 으로 넘 어 가 는 첫 번 째 주소 입 니 다.  한편,a[0]은 좌석 의 첫 번 째 주소 에 해당 하고 a[0]+0 은 0 칸 의 0 번 째 좌석 으로 이동 하 며 a[0]+1 은 0 칸 의 첫 번 째 좌석 으로 이동한다.
201657162403111.jpg (721×435)
포인터 배열 은 2 차원 주소(좌석 주소,실제 주소)를 가리 키 고 있 습 니 다.
2 차원 배열 의 요 소 를 참조 하기 위해 포인터 배열 을 만 듭 니 다:int*p[3],a[3][2],i,j;여러 가지 에서 볼 수 있 듯 이 p 는 하나의 배열 이름 으로 정의 할 때 시스템 은 그 에 게 3 개의 연속 적 인 저장 부 를 열 어 주 었 다.이 앞 에*번 호 를 붙 여 표시 합 니 다.배열 의 기본 유형 은 int 의 포인터 형식 입 니 다.우 리 는 for 순환 을 통 해 이 배열 안의 포인터 가 각 줄 의'좌석'의 첫 주 소 를 가리 킬 수 있 습 니 다.
201657162430649.jpg (337×319)
이 배열 은'좌석'주소 유형 배열 로 이해 할 수 있 습 니 다.
다음 에 우리 가 정의 한 이 배열:int a[3][2],(*prt)[2]는 줄 포인터 배열(기차 칸 배열)입 니 다.그러면 우 리 는 모든'칸 의 주소'를 우리 의 줄 포인터 배열 변수 에 넣 을 수 있 습 니 다.
이렇게 하면 우 리 는 a 라 는 줄 주소 의 상수 값 을 줄 주소 변수 p=a.p+1 은 a+1 과 같 고 a[1]와 같 습 니 다.p 가 배열 의 첫 주 소 를 가리 킬 때 다음 과 같은 형식 으로 p[i][j]를 참조 할 수 있 습 니 다.
(1) *(p[i]+j)
(2)*(*(p+i) +j ))
(3)(*(p+i))[j]
(4)p[i][j]
p 는 줄 포인터 변수 이 고 2 차원 배열 이름 a 는 줄 주소 변수 입 니 다.
이상 은 2 차원 배열 과 지침 에 대한 이해 입 니 다.

좋은 웹페이지 즐겨찾기