C 언어

[Unreal Engine 8기] C언어 포인터 심화

조현묵 2026. 3. 4. 20:33
  • 포인터와 연산자
더보기
  • 포인터의 크기
포인터의 크기
  • 배열의 이름도 포인터

배열의 이름도 사실 포인터입니다. 즉 메모리 주소를 저장하고 있습니다.

정확히는 배열의 시작 메모리 주소를 저장하고 있습니다.

  • 배열의 이름과 포인터
배열의 이름과 포인터
  • 반대로 포인터도 배열이름처럼 첨자 연산자 []를 쓸 수 있습니다.

결국 컴파일러에게 포인터와 배열이름은 동일한 동작 가능하기 때문입니다.

Array[1] == Pointer[1] == *(Array + 1) == *(Pointer + 1);

  • 배열의 인덱스와 포인터 연산 1
배열의 인덱스와 포인터 연산1
  • 배열의 인덱스와 포인터 연산 2
배열의 인덱스와 포인터 연산 2
  • pointer to char Vs. pointer to int

pointer to char에 1을 더하면 주소도 1 더해집니다.

pointer to int에 1을 더하면 주소는 4가 더해집니다.

즉, 자료형의 크기만큼 주소도 증가합니다.

포인터에 ++연산을 가하면 다음 메모리 주소를 가르키게끔 설계되어 있단 뜻입니다.

이는 덧셈 뺄셈 증감 모두 적용됩니다.

  • 포인터 + 정수의 의미

포인터에 정수 n을 더하거나 빼면 (sizeof(자료형) * n) 만큼 주소 이동됩니다.

  • 배열 인덱스의 진짜 의미

“시작 메모리 주소로부터의 떨어진 거리”

떨어진 거리 정도를 다른 말로 오프셋(Offset)이라고도 합니다.

ex) Array[0]는 “배열의 시작 메모리 주소로부터 0만큼 떨어져 있다.”

  • 중요 포인트

1.포인터의 크기와 자료형의 크기는 헷갈리지 맙시다.

   포인터의 크기는 32bit 플랫폼 기준 4바이트. 64bit는 8바이트.

2.배열은 첫 번째 요소의 메모리 주소와 자료형만 안다면 n 번째 요소도 알 수 있습니다.

  • 배열의 인덱스와 포인터 연산 3
배열의 인덱스와 포인터 연산 3
  • 배열의 인덱스와 포인터 연산 4
배열의 인덱스와 포인터 연산 4
  • 포인터 연산 1
포인터 연산1

 

'C 언어' 카테고리의 다른 글

[Unreal Engine 8기] C언어 6일차  (0) 2026.03.03
[Unreal Engine 8기] C언어 5일차  (0) 2026.02.27
[Unreal Engine 8기] C언어 4일차  (0) 2026.02.26
[Unreal Engine 8기] C언어 3일차  (0) 2026.02.25
[Unreal Engine 8기] C언어 2일차  (0) 2026.02.24