F.R.I.D.A.Y.

배열 변수의 이름이 0번 인덱스의 시작 주소인 이유 본문

DEV/C C++

배열 변수의 이름이 0번 인덱스의 시작 주소인 이유

F.R.I.D.A.Y. 2020. 1. 6. 23:41
반응형

https://pixabay.com/photos/work-typing-computer-notebook-731198/

 이번 포스트는 제목 그대로 배열 변수의 이름이 어째서 해당 배열의 0번 인덱스의 주소가 되는지 알아봅니다.


간단해요!

int arr[10];

&arr[0];
// 처음 배울 때 주로 사용하는 0번 인덱스의 주소를 가져오는 법입니다.

&*(arr + 0);
// 처음 코드는 위와 같이 변경할 수 있습니다.

&*(arr);
// 0은 더하든 말던 값의 변화가 없으므로 지울 수 있습니다.

(arr);
/* 간접 참조 연산자(*)와 주소 연산자(&)는 곱셈과 나눗셈처럼 서로 상반 관계입니다.
   따라서 함께 없앨 수 있습니다. */

arr;
// 불필요한 괄호를 지워줍니다.
// 따라서
// &arr[0] == arr 입니다.

 이 내용은 포인터를 배우다보면 알게되는 내용입니다 :)

 이 표현법을 알게 되면 대괄호를 통한 배열 연산자에 다시 주소 연산자(&)를 붙여 특정 인덱스의 주소를 가져오지 않아도 됩니다.

 

 만일 배열의 3번 인덱스 주소를 가져오고 싶다면 아래처럼 작성하면 됩니다.

scanf("%d", arr + 3);
// 예시: arr은 int 배열로, 3번 인덱스에 값을 받으려고 합니다.

 

 더 자세한 내용은 아래 포스트를 참고하세요.

 

포인터와 배열

배열 변수의 이름이 0번 인덱스의 시작 주소인 이유 이번 포스트는 제목 그대로 배열 변수의 이름이 어째서 해당 배열의 0번 인덱스의 주소가 되는지 알아봅니다. 간단해요! int arr[10]; &arr[0]; // 처음 배울..

pang2h.tistory.com

 

728x90
반응형

'DEV > C C++' 카테고리의 다른 글

함수 호출 구조  (0) 2020.01.07
포인터 part1. default  (0) 2020.01.07
typedef  (0) 2020.01.04
구조체(struct) part1. default  (0) 2020.01.02
비트 연산자 : 함수에 인자 넘기기  (0) 2019.12.31
Comments