카테고리 없음

[아는대로써보기] C++ 포인터 - 3

Youngil_Koh_Ph.D 2020. 9. 15. 16:14

 

int arr[] = {1,2,3};

 

1. 배열은 포인터변수의 성격을 가짐

 

cout << arr << endl; 

을 해보면, 배열의 경우 해당 값이 저장되어있는 메모리주소의 시작부분이 출력됨.

 

cout << *arr << endl;

따라서 아래의 코드 처럼 출력하면, arr[0]의 값이 출력됨

 

2. 하지만 배열의 메모리주소 변경은 불가

 

int arr[] = {1,2,3};

int num = 7;

int *arr = &num;   // 컴파일 에러

 

그렇다고 위의 코드 처럼 메모리주소값 변경은 불가함.

포인터변수의 성격을 가지나, 주소값 변경을 안되므로, 포인터상수의 성격을 가짐

 

3. arr VS &arr 의 출력값은 같지만, 변수형은 다르다!

 

cout << arr + 1 << endl;

cout << &arr + 1 << endl;

은 서로 다른 결과를 출력함

 

4. arr + k = &arr[k] 

 

arr에 정수 k를 더하면, k+1번째 값의 주소를 의미함