AI 시스템 반도체 SW/C 언어

[C 언어] 10 배열과 포인터

psh010208 2026. 6. 2. 18:10
  • 배열명은 첫 번째 요소의 주소
int ary[3];
ary == &ary[0];

 

 

  • 포인터에 배열명을 저장하면 포인터를 배열명처럼 사용이 가능
int ary[3];
int *pa = ary;
pa[1] = 10; // 두 번째 배열 요소에 10 대입

 

 

  • 배열명의 정수 덧셈은 가리키는 자료형의 크기를 곱해서 더함
int ary[3];
ary + 1; // ary + (1 * sizeof(*ary));

 

 

  • 포인터의 뺄셈 결과는 배열 요소 간의 간격 차이를 의미
int ary[3];
int *pa = ary;
int *pb = pa + 3;

printf("%d", pb-pa); // ary의 주소를 100으로 가정하면, (112 - 100) / sizeof(int) => 12 / 4 => 3

 

 

  • 배열출력하는 함수에 필요한 것은 배열명
  • 배열입력하는 함수에 필요한 것도 배열명
  • 배열의 크기가 달라도 입출력을 할 수 있게 하려면 배열 요소의 개수를 알아야 함

 

  • 배열에 입출력하는 함수
  배열을 출력하는 함수 배열에 입력하는 함수
호출 int ary[5] = { 10, 20, 30, 40, 50 };
print_ary(ary, 5);
int ary[5];
input_array(ary, 5);
정의 void print_ary(int *pa, int size)
{
    int i;
    for(int i = 0; i < size; i++)
    {
        printf("%d ", pa[i]);
    }
}
void input_array (int *pa, int size)
{
    int i;
    for(int i = 0; i < size; i++)
    {
        scanf("%d ", pa + i);
    }
}