-
반응형
포인터로 배열의 주소를 저장하여 사용하기
- 배열은 배열의 시작 주소를 기준으로 색인 작업된 요소의 위치를 계산
- 배열의 같은 요소를 반복적으로 사용하는 경우 효율이 떨어짐
char data[5] = {1,2,3,4,5}; int sum = 0, select = 2; // sum 변수에 data[2] 요소 값을 10번 더함 for(int i = 0; i< 10; i++) sum = sum + data[select]; // for(int i = 0; i< 10; i++) sum = sum + *(data + select); 과 같음. 덧셈이 2번 일어나는 낭비현상이 발생함.
- 지속적으로 사용되는 배열의 요소는 주소를 포인터 변수에 저장하여 사용하면 효율 증진됨
char data[5] = {1,2,3,4,5}; int sum = 0, select = 2; char *p = data + select; // char *p = &data[select]와 동일한 표현 for(int i = 0; i< 10; i++) sum = sum + *p; // 위 예시와 비교했을 때 덧셈연산자 낭비 발생 안함
배열 예제를 포인터 사용해서 바꾸기
// 배열 ver. char data[5] = {1,2,3,4,5}; int result = 0; for(int i = 0; i< 5; i++) result = result + data[i]; printf(“data 배열의 각 요소의 합은 %d입니다.\n”,result);
// 포인터 ver. char data[5] = {1,2,3,4,5}; int result = 0; char *p = data; // data 배열의 시작 위치를 포인터 변수 p에 저장함 for(int i = 0; i< 5; i++) { result = result + *p; p++; } printf(“data 배열의 각 요소의 합은 %d입니다.\n”,result);
반응형'C' 카테고리의 다른 글
배열과 포인터의 합체 (0) 2022.05.25 배열과 포인터 표기법 (0) 2022.05.22 표준 입력 함수 scanf (0) 2022.05.21