NULL
포인터와 배열관계 본문
포인터 변수와 배열의 차이점!
배열에 첫번째 이름은
배열의 첫번째방 주소를 가리키며
상수라서 주소값을 변경할수없다.
포인터 변수는
주소값 변경이 가능하다.
포인터형을 결정하는 법은 간단하다.
각자 맞는 자료형으로 가리키면 된다.
포인터를 배열이름처럼 사용가능하다.
보통 배열이라면 이렇게 연산을 할것이다.
다음 소스를 봐보자.
배열과 배열의 첫번째 값을
가리키는 포인터변수는 값이 똑같다.
분석해보면
인덱스 3인 int형 arr배열선언
arr[0]=15
arr[1]=25
arr[2]=35
값으로 초기화시켰다.
int형 포인터변수 ptr선언 후
arr의 첫번째값으로 초기화
이것은 배열이름을 써준것과 같다.
그 후 arr[0~2]과 ptr[0~2]을
출력해보면 실제로 값도 같다.
이유는
ptr은 arr을 가리키고 있고
*로 메모리공간을 접근할수있다.
그래서 포인터연산으로 접근하면
arr의 값이 나오게된다.
그리고 포인터가 증감할때마다
int형이면 4바이트씩 증감하고
double은 8바이크씩 증감한다.
즉 자료형크기만큼 주소값이 증감한다.
그리고 [] 기호도 배열의 첫번째
인덱스를 가리키고 있는것과 같아서
포인터와 같다.
인덱스마다 타입크기만큼
차이나고 배열이름부터
증감을 하면 배열인덱스를
접근가능하다.
arr[i] == *(arr+i)
배열의 이름을 이용한 접근방식도
포인터 변수를 대상으로 사용할수있다.
arr[i] 이것은 배열의 이름으로 접근한것이며
*(arr+i) 이것은 포인터변수로 접근한것이다.
포인터 변수를 해석해보면
*는 메모리에 접근한다는 의미.
그뒤 괄호 ( )는 주소값을 의미한다.
arr+i번째의 주소값이라고 볼수있다.
한마디로 arr+i번째 주소값에 접근한다.
이런 의미인것이다.
'C' 카테고리의 다른 글
포인터 배열의 이해 (0) | 2016.12.18 |
---|---|
문자열 배열과 문자열 포인터 (0) | 2016.12.18 |
포인터에 대한 이해 (0) | 2016.12.18 |
문자열배열과 NULL문자 (0) | 2016.12.14 |
1차원 배열 개념정리 (0) | 2016.12.14 |