본문 바로가기

포인터공부

(2)
포인터의 이해(3) - 포인터와 1차원, 2차원 배열 / 더블포인터 / 배열의 포인터 / 포인터 배열 1차원 배열과 포인터 배열 arr를 출력하면 arr[0]의 주소값이 출력된다고 했다. 또한, [] 연산자는 * (arr + i) 로 바뀌어서 []안에 있는 숫자에 해당하는 위치의 값을 출력한다고 배웠다. 다른 int* 포인터가 이 배열을 가리킬 수 있는지 확인해보자. #include int main() { int arr[] = { 1,2,3,4,5 }; int* p ; p = &arr[2]; printf("arr : %d \n", arr[1]); printf("arr2 : %d ", p[1]); return 0; } int 형을 가리키는 포인트 변수 p를 정의하고, p = &arr[2]; 를 통하여 p에 arr[2]의 주소값을 대입하였다. 그리고 p[1]를 실행하면 *(p + 1) 로 바뀌어서 arr[3..
포인터의 이해(2) - 상수 포인터, 포인터의 덧셈과 뺄셈, 배열과 포인터의 관계, [] 연산자 상수포인터 const 키워드를 붙여 데이터를 상수(바뀌지 않은 값)로 만들 수 있다. 포인터 또한, const 키워드를 붙여 상수로 만들 수 있다. 예를 들어보며 이해해보자 #include int main() { int a; int b; const int* p = &a; p = &b; //올바른 문장 *p = 3; //올바르지 않은 문장 return 0; } 다음 예시는 컴파일을 했을 경우 에러가 난다. const int* 의 의미는 const int 형 변수를 가리킨다는 의미가 아니고, int 형 변수를 가리키는데 그 값을 절대로 바꾸지 말라는 의미이다. 즉, p는 int형 변수를 가리키고 있고 const가 붙어있어서 p가 가리키는 변수의 값이 바뀌면 안되는 것이다. 여기서 변수 a는 값이 자유롭게 바..