한국어
C/C++
 

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

makersweb 2014.03.10 22:35 조회 수 : 4727

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]

번호 제목 글쓴이 날짜 조회 수
공지 C Programming FAQs(한글번역 pdf문서) makersweb 2014.03.18 27011
22 비트 필드의 크기는 해당 유형의 크기를 초과할 수 없다. makersweb 2023.04.25 464
21 배열과 포인터, 등가포인터 예제 makersweb 2019.01.16 1209
20 함수포인터와 typedef로의 선언 makersweb 2018.02.03 1256
19 C++로 플러그인 개발 file makersweb 2019.12.08 1918
18 flexible array member 에 대해서 file makersweb 2020.02.20 2042
17 switch와 if 중 어느 것이 더 빠른가 file makersweb 2017.01.31 2935
16 싱글톤 객체생성 패턴에 대해서 file makersweb 2018.07.01 3769
15 Bit fields(비트필드) pjk 2014.05.24 4493
14 volatile이 정확히 어떤 의미를 가지는 건가요? pjk 2014.09.30 4718
» C언어 강좌-배열과 포인터 file makersweb 2014.03.10 4727
12 클래스 멤버에 대한 액세스 제어 pjk 2014.06.27 4808
11 void형 포인터 pjk 2014.05.24 5230
10 c/c++문자열, 유니코드 관련 함수 makersweb 2015.07.09 5343
9 구조체 메모리 저장방식 #pragma pack file pjk 2014.05.24 5448
8 C코드 최적화 pjk 2014.02.10 5473
7 영어를 C언어로, 또는 C언어를 영어로 변환 해주는 cdecl makersweb 2014.03.19 7516
6 함수 포인터의 배열 pjk 2014.05.24 7809
5 예제소스를 통해 리틀엔디안(Little endian)과 빅엔디안(Big endian)의 차이점 알아보기 pjk 2014.05.24 8245
4 구조체 배열을 반환하는 함수를 반환하는 함수를 호출하여 구조체 멤버 배열 요소 접근하기 makersweb 2016.05.22 9902
3 strcmp, wcscmp, _tcscmp pjk 2014.07.18 10669