한국어
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 27013
22 비트 필드의 크기는 해당 유형의 크기를 초과할 수 없다. makersweb 2023.04.25 488
21 배열과 포인터, 등가포인터 예제 makersweb 2019.01.16 1234
20 함수포인터와 typedef로의 선언 makersweb 2018.02.03 1278
19 C++로 플러그인 개발 file makersweb 2019.12.08 1945
18 flexible array member 에 대해서 file makersweb 2020.02.20 2071
17 switch와 if 중 어느 것이 더 빠른가 file makersweb 2017.01.31 3096
16 싱글톤 객체생성 패턴에 대해서 file makersweb 2018.07.01 3794
15 Bit fields(비트필드) pjk 2014.05.24 4494
» C언어 강좌-배열과 포인터 file makersweb 2014.03.10 4727
13 volatile이 정확히 어떤 의미를 가지는 건가요? pjk 2014.09.30 4743
12 클래스 멤버에 대한 액세스 제어 pjk 2014.06.27 4830
11 void형 포인터 pjk 2014.05.24 5263
10 c/c++문자열, 유니코드 관련 함수 makersweb 2015.07.09 5371
9 구조체 메모리 저장방식 #pragma pack file pjk 2014.05.24 5457
8 C코드 최적화 pjk 2014.02.10 5473
7 영어를 C언어로, 또는 C언어를 영어로 변환 해주는 cdecl makersweb 2014.03.19 7547
6 함수 포인터의 배열 pjk 2014.05.24 7831
5 예제소스를 통해 리틀엔디안(Little endian)과 빅엔디안(Big endian)의 차이점 알아보기 pjk 2014.05.24 8247
4 구조체 배열을 반환하는 함수를 반환하는 함수를 호출하여 구조체 멤버 배열 요소 접근하기 makersweb 2016.05.22 9925
3 strcmp, wcscmp, _tcscmp pjk 2014.07.18 10696