IT 프로그래밍/자료구조

포인터, 배열, 포인터 산수

기술1 2024. 9. 2. 15:10
반응형

배열과 포인터의 관계

int a[10]; 이라는 배열이 있다고 가정을 합시다.

 

배열의 이름 a는 배열의 시작 주소를 저장하는 정수형 포인터 변수라고 생각을 해도 됩니다 ( 단 저장된 주소값을 변경할 수 없으니 int * const 타입이라고 생각하면 됩니다)

 

배열의 매개변수 예시 코드

#include <iostream>
using namespace std;

int calculate_sum(int* array);

int main() {
	int sum;
	int num[10];
	for (int i = 0; i < 10; i++)
		cin >> num[i];
	sum = calculate_sum(num);
	double average = (double)sum / 10;
	cout << average << endl;
	return 0;
}

int calculate_sum(int* array) {
	int sum = 0;
	for (int i = 0; i < 10; i++)
		sum = sum + array[i];

	return sum;
}

 

배열의 평균을 구하는 코드입니다. 배열이 매개변수로 넘어올 때 int array[] 대신 이렇게 포인터로 받을 수도 있습니다. 함수 내에서 마치 aray가 배열인 것처럼 사용할 수 있습니다. 

 

포인터 산수

포인터 변수에 대해서 덧셈, 뺄셈, 증감연산을 적용할 수 있습니다. 단 곱셈과 나눗셈은 지원하지 않습니다. 

 

*a와 a[0]는 동일한 의미입니다. 또한 a[1]은 *(a+1)과 동일하고, a[i]는 *(a+i)와 동일합니다. 이 규칙은 배열의 타입과 무관하게 항상 성립합니다. 

 

 

반응형