본문 바로가기
컴퓨터일반

C/C++ 동적 할당 배열 인덱스 1부터 시작하기

by __observer__ 2012. 6. 21.
반응형

MATLAB 을 사용해본 분들은 아시겠지만, MATLAB 의 배열 인덱스는 1부터 시작 합니다.

 

그런데 C 나 그 밖의 컴퓨터 언어들의 배열 인덱스는 보통 0에서부터 시작을 하죠.

 

모듈로 같은 연산을 할 때는 0 부터 시작하는게 편하지만 그 밖의 몇가지 수학적인 연산에 이용되는 배열의 경우 1 에서부터 시작하는 게 편리 할 때도 있는데요.

 

이런 경우에 C/C++ 에서 동적 할당을 이용하여 배열을 만드는 방법에 대해 설명 드리려 합니다.

 

지난 포스팅에서 다차원 배열을 할당 할 때 calloc() 을 사용하여 배열을 할당했는데요.

 

 

2011/10/05 - [컴퓨터일반] - C 언어 이차원 동적 배열


 

다음과 같이 할당한 포인터에 -1 만큼 옵셋을 주면 배열의 인덱스를 1부터 n 까지로 이용 할 수 있습니다.

 

int n;

Int * Arr; // 배열에 대한 포인터 선언

Arr=(int *)calloc(n , sizeof(int));     // calloc() 함수 이용 동적 배열 선언, n은 배열의 크기

--Arr;             // 포인터에 -1만큼 옵셋을 줘서 Arr[1], Arr[2]… Arr[n] 등으로 각 인자의 값에 접근

 

free(Arr+1);         // -1 만큼 옵셋을 줬으므로 +1 을 해서 동적 배열을 해제 해 준다.



반응형

댓글