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]
포인터에 정수값을 더할 때는 포인터가 가리키는 자료형의 크기를 곱해서 더해준다. 예를 들어 4를 더하면 마지막 배열요소의 포인터가 구해진다.
[그림 2]
모든 배열요소의 포인터는 첫번째 배열요소의 포인터에 정수값을 차례로 더하면 구해진다.
int ary[5] = {10, 20, 30, 40, 50};
[그림 3]
각 배열요소의 포인터에 참조연산자를 사용하면 모든 값을 참조할 수 있다. 아래 코드가 그 예이다.
for(i=0; i<5; i++){ printf(“%dn”, *(&ary[0]+i)); }
[그림 4]
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
공지 | C Programming FAQs(한글번역 pdf문서) | makersweb | 2014.03.18 | 27011 |
10 | 비트 필드의 크기는 해당 유형의 크기를 초과할 수 없다. | makersweb | 2023.04.25 | 464 |
9 | flexible array member 에 대해서 | makersweb | 2020.02.20 | 2042 |
8 | 배열과 포인터, 등가포인터 예제 | makersweb | 2019.01.16 | 1209 |
7 | 함수포인터와 typedef로의 선언 | makersweb | 2018.02.03 | 1256 |
6 | 예제소스를 통해 리틀엔디안(Little endian)과 빅엔디안(Big endian)의 차이점 알아보기 | pjk | 2014.05.24 | 8245 |
5 | switch와 if 중 어느 것이 더 빠른가 | makersweb | 2017.01.31 | 2935 |
4 | volatile이 정확히 어떤 의미를 가지는 건가요? | pjk | 2014.09.30 | 4718 |
3 | unsigned형의 모든 상수에는 접미사 ‘U’를 사용하여야 한다. | pjk | 2014.05.24 | 37604 |
2 | void형 포인터 | pjk | 2014.05.24 | 5230 |
» | C언어 강좌-배열과 포인터 | makersweb | 2014.03.10 | 4727 |