-
[C,C++] 포인터와 배열기초/C,C++ 2017. 3. 2. 09:40
포인터는 #1 주소값, #2 포인터 타입이 필요하다.
포인터는 항상 가르키는 대상의 맨앞 주소를 가르키고 있다.
배열은 이름자체가 [0]번쨰 방을 가르키고 있으며 변수의 타입을 가지고있다.
그럼 차이점은 무엇인가?
포인터는 "포인터 변수"이고
배열은 "포인터 상수"입니다.
변수 = 바꿀 수 있다.
상수 = 바꿀 수 없다.
포인터는 가르키는 대상을 변경할 수 있지만
배열은 항상 자기 자신의 0번째 인덱스를 가르킵니다.
포인터와 배열에는 덧셈을 할 경우 변수타입의 바이트가 더해집니다.
예를들어 arr = 1235008일 경우
arr + 1 = 1235012가 됩니다.
int 타입이 4바이트로 인식되어 자료형의 크기가 더해진겁니다.
그래서 arr = arr[0]을 가르키므로
arr + 1 = arr[1]을 가르키게 됩니다.
[결과창]
그렇다면 배열을 포인터로 표현이 가능할까?
네 가능해요
배열은 포인터 상수라고 표현을 했을 때
상수에 다른값을 못 넣을 뿐이지 변수에는 상수값을 넣는게 가능합니다.
물론 포인터도 배열로 포인터로 표현이 가능합니다.
[결과창]
#1 포인터와 배열
arr을 선언하고 pArr 포인터 변수에 arr의 주소값을 넣었을 때
pArr과 arr은 똑같은 주소를 가르키고 있는것을 볼 수 있습니다.
#2 배열을 포인터처럼 가져와서 사용하기
배열 arr을 포인터처럼 표현해서 사칙연산을 할 수 있습니다.
#3 포인터를 배열처럼 배열을 포인터처럼 표현할 수 있습니다.
따라서 둘은 주소값을 표현하는 방식이므로 같은 의미이지만
다른 점 한가지만 기억하시고 사용하시면 될 수 있을것 같습니다.
포인터는 변수
배열은 상수
'기초 > C,C++' 카테고리의 다른 글
[C/C++] 클래스, 구조체, 함수의 차이점 (0) 2017.03.03 [C/C++] 반환 형식 ,Call by ~ (0) 2017.03.02 [C/C++] 포인터 (0) 2017.02.28 [C/C++] 문자열 라이브러리 함수 (0) 2017.02.27 [C/C++] 키워드 (2) 2017.02.24