Menu
Coddy logo textTech

포인터로서의 배열 이름

Coddy C 여정의 논리 & 흐름 섹션에 포함된 레슨. 63개 중 7번째.

C에서 array와 pointer는 C가 메모리의 data를 다루는 방식을 이해하는 데 기본이 되는 특별한 관계를 가집니다. array를 선언하면 array 이름 자체가 array의 first element를 가리키는 상수 pointer로 동작합니다.

즉, int numbers[5];와 같은 배열이 있을 때 numbers라는 이름은 본질적으로 항상 numbers[0]을 가리키는 포인터입니다. 배열 이름을 별도로 선언할 필요가 없는 내장 포인터라고 생각하면 됩니다.

int numbers[5] = {10, 20, 30, 40, 50};
// 'numbers' points to the first element
// numbers == &numbers[0]  // 이것들은 동일합니다!

이 등가성은 매우 중요합니다. numbers&numbers[0]은 모두 정확히 동일한 메모리 주소를 제공합니다. 배열 이름은 주소 연산자를 사용하지 않고도 첫 번째 요소의 주소를 가리키는 더 편리한 방법일 뿐입니다.

이 관계를 이해하면 array에 pointer 기법을 사용하는 길이 열리며, 이를 통해 코드를 더 유연하고 효율적으로 만들 수 있습니다. 핵심적인 차이점은 일반적인 pointer와 달리 array 이름은 상수 pointer라는 것입니다. 즉, pointer가 가리키는 대상을 변경할 수 없습니다.

challenge icon

챌린지

쉬움

array 이름과 첫 번째 element에 대한 pointer 사이의 동등성을 보여 주는 C 프로그램을 작성하세요. 프로그램은 다음을 수행해야 합니다.

  1. 4개의 element를 가진 numbers라는 integer array를 Declare하고 {10, 20, 30, 40} values로 initialize하세요.
  2. ptr라는 integer에 대한 pointer를 Declare하세요.
  3. array 이름 numbers를 pointer ptr에 Assign하세요.
  4. %p format specifier와 함께 printf를 사용하여 numbers에 저장된 address를 Print하세요.
  5. %p format specifier와 함께 printf를 사용하여 첫 번째 element의 address인 &numbers[0]을 Print하세요.
  6. %p format specifier와 함께 printf를 사용하여 ptr에 저장된 address를 Print하세요.
  7. array 이름을 사용하여 첫 번째 element의 값을 Print하세요: *numbers
  8. pointer를 사용하여 첫 번째 element의 값을 Print하세요: *ptr

출력은 다음 형식으로 결과를 표시해야 합니다.

Array name address: [address]
First element address: [address]
Pointer address: [address]
Value via array name: 10
Value via pointer: 10

이 challenge는 array 이름이 첫 번째 element에 대한 constant pointer로 동작하며, ptr이 array 이름에 Assign되었을 때 numbers, &numbers[0], ptr이 모두 동일한 memory address를 포함한다는 것을 보여 줍니다.

직접 해보기

#include <stdio.h>

int main() {
    // TODO: 여기에 코드를 작성하세요
    // 1. 배열 'numbers'를 {10, 20, 30, 40}으로 선언하고 초기화하세요
    // 2. 'ptr'이라는 이름의 정수 포인터를 선언하세요
    // 3. 배열 이름을 포인터에 할당하세요
    // 4. 필요한 모든 주소와 값을 출력하세요
    
    return 0;
}
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

논리 & 흐름의 모든 레슨

직접 연습해 보세요: 온라인 C 컴파일러