이번 포스팅에서는 포인터와 배열을 다루어봤습니다.
배열을 이해하는데 무리가 없었는데, 포인터는 이해를 하는데 조금 시간이 걸리네요.
그래서 각각 특징을 포스팅을 통해 코드로써 소개해보려합니다.
첫번째 특징으로 "포인터는 배열의 인덱스 표기법보다 동작 속도가 빠르다." 입니다.
하단의 작성된 코드를 보시면 알 수 있듯이 둘의 결과값은 다르지 않습니다.
하지만, 포인터의 경우 배열처럼 인덱스값을 매번 호출할 필요는 없기에 그 속도는 더 빠르다고 합니다.
// 포인터를 사용한 방법의 장점
// 포이터가 인덱스 표기법보다 빠르다. why? 인덱스를 주소로 변환할 필요가 없어서
#include <Stdio.h>
int get_sum1(int a[], int n);
int get_sum2(int a[], int n);
int main(void)
{
int a[] = { 1, 2, 3 };
int size;
size = sizeof(a) / sizeof(a[0]);
printf("get_sum1의 값: %d\n",get_sum1(a, size));
printf("get_sum2의 값: %d\n",get_sum2(a, size));
return 0;
}
int get_sum1(int a[], int n)
{
int i;
int sum = 0;
for (i = 0; i < n; i++)
{
sum += a[i];
}
return sum;
}
int get_sum2(int a[], int n)
{
int i;
int sum = 0;
int* p; // 포인터 변수 p를 선언한다.
p = a; // 포인터 변수 p를 a로 초기화한다.
for (i = 0; i < n; i++)
{
sum += *p++;
}
return sum;
}
반응형
'코딩 | 개념 정리 > C' 카테고리의 다른 글
[C언어] 인수 호출 방법, 포인터를 왜 쓰는 것인가? (0) | 2021.04.30 |
---|---|
[C언어] 포인터, 배열의 원소를 역순으로 출력하기 (0) | 2021.04.29 |
[C언어] 배열 요소 복사하기 (0) | 2021.04.29 |
[C언어] 2개의 정수 배열 비교하기 (2) | 2021.04.29 |
[C언어] 배열로 최대값, 최소값 출력하기 (0) | 2021.04.28 |