pointer

포인터 배열은 말 그대로 포인터로 이루어진 배열이다. 앞서 포스팅한 배열 포인터와는 이름부터가 다르다. int a[3][5]; int b[6]; int* p = b; b[0]의 주소값을 100이라고 한다면, b = 100, b + 1 = 104이다. 마찬가지로, p = 100, p + 1 = 104이다. 이는 앞서 포스팅한 내용과 같다. 왜? 배열로 이루어진 포인터니까. 여기서 볼 것은 a와 같이 선언된 배열이다. p = a라는 선언이 될까? 된다면 좋겠지만 선언은 int (*p)[5] = a; 라고 선언해야한다. 그 이유는 아래와 같다. a의 주소값을 200이라고 한다면, a = 200, a + 1 = 220, a + 2 = 240이 된다. 200 204 208 212 216 220 224 228 23..
일단 알아야 할 첫 번째 잡기술 포인터는 자료형에 상관 없이 4byte를 차지한다. 별로 중요해보이지 않다고 느낄수도 있으나 은근 중요한 내용이다. int a[5] = { 2, 4, 6, 8, 10 }; int* p = a; sizeof(int) = 4; sizeof(a) = 20; sizeof(a[0]) = 4; 이런 식으로 공간을 차지하고 있다. 만약 a = 50을 선언하면? --> 에러가 난다. 그 이유는 배열명은 변수가 아니라 시작 주소를 가지는 상수이기 때문이다. 여기서 중요한 점은 배열명은 시작 주소를 가지는 상수라는 부분이다. a[0]의 주소값을 100번지라고 한다면, a = 100 번지 a + 1 = 104번지 이런식으로 읽을 수 있다. 마찬가지로 포인터식으로 표현하자면, a = 100번지..
C++ 공부 중 포기하게 될 뻔한 두 번째 단계. 여러 강의도 찾아보고 책도 읽어가며 나름 열심히 정리했다. 그 중 가장 이해하기 쉬웠던 강의 https://www.youtube.com/watch?v=nQEvGgt1HZ8 -양주종의 코딩스쿨 중 "C언어 포인터 인강 ① 포인터 때문에 미쳐 버릴 것 같은 당신께 포인터는 넘어설 수 있습니다. 한 번에 이해하기 어렵다면 정상입니다. 반복해서 보시길 권합니다." 아직 완벽히 이해했다고 감히 말할 수는 없지만 그래도 처음 접했을 때보다는 많이 알게 되었다. int a = 20; int* p = &a; 이 선언과 동시에 아래의 메모리가 할당된다. 20 바로 위 그림은 a의 메모리를 그림으로 표현한 것이고 a의 시작 주소를 가리키는 것이 포인터이다. a의 주소값을 ..
sy46
'pointer' 태그의 글 목록