한국어
C/C++
 

C C언어 강좌-배열과 포인터

makersweb 2014.03.10 22:35 조회 수 : 4363

1. 포인터로 배열 다루기

배열의 모든 값을 출력하는 함수를 만들 때 배열요소의 값을 일일이 전달인자로 주는 것은 한계가 있다. 아래 예제 코드를 보자!

 

배열의 선언

 

int ary[5] = {10, 20, 30, 40, 50};

 

함수의 호출

 

ary_prn(ary[0], ary[1], ary[2], ary[3], ary[4]);

▲모든 배열요소를 일일이 전달인자로 줘야 한다.
 

 

함수의 정의

void ary_prn(int a, int b, int c, int d, int e)
{
    printf(“%d, %d, %d, %d, %dn”, a, b, c, d, e);
}

▲매개변수도 배열요소의 개수만큼 있어야 한다!
 

 

포인터를 사용하면 배열요소의 값(데이터)를 간단히 처리할 수 있다.

 

2. 포인터로 배열요소를 참조하자!

배열은 첫번째 배열요소의 포인터만 알면 나머지 배열요소의 포인터도 쉽게 알 수 있다.그림1.jpg

[그림 1]

 

포인터에 정수값을 더할 때는 포인터가 가리키는 자료형의 크기를 곱해서 더해준다. 예를 들어 4를 더하면 마지막 배열요소의 포인터가 구해진다.

그림2.jpg

[그림 2]

 

모든 배열요소의 포인터는 첫번째 배열요소의 포인터에 정수값을 차례로 더하면 구해진다.

int ary[5] = {10, 20, 30, 40, 50};

 

그림3.jpg

[그림 3]

각 배열요소의 포인터에 참조연산자를 사용하면 모든 값을 참조할 수 있다. 아래 코드가 그 예이다.

 

for(i=0; i<5; i++){
    printf(“%dn”, *(&ary[0]+i));
}

 

그림5.jpg

[그림 4]

이 글과 연관된 다른 글
  1. [2020/06/16] 한글에서 c언어로 번역하는 프로그램이나 홈페이지는 없을까요? by 에몽이 (39) *1
  2. [2020/02/20] flexible array member 에 대해서 by makersweb (94)
  3. [2019/11/29] QScopedPointer 소개 및 사용법 by makersweb (214)
  4. [2019/01/16] 배열과 포인터, 등가포인터 예제 by makersweb (475)
  5. [2014/02/09] C Programming FAQs에 대한 한글(한국어) 판 by Pjk (1308)
번호 제목 글쓴이 날짜 조회 수
공지 C Programming FAQs(한글번역 pdf문서) makersweb 2014.03.18 21678
» C언어 강좌-배열과 포인터 file makersweb 2014.03.10 4363
1 C코드 최적화 pjk 2014.02.10 5057