혼자 공부하는 C 언어 - YES24
혼자 해도 충분하다! 1:1 과외하듯 배우는 C 프로그래밍 자습서이 책은 독학으로 C 언어를 배우는 입문자가 ‘꼭 필요한 내용을 제대로’ 학습할 수 있도록 구성했다. ‘무엇을’ ‘어떻게’ 학
www.yes24.com
지금까지 배열명을 첫 번째 요소의 주소로 사용해왔습니다. 이제 배열 전체를 하나의 변수로 생각하고 그 주소를 구해봅니다.
배열의 주소 &art가 주소로 쓰이는 ary와 어떤 차이가 있는지 예제를 통해 살펴보겠습니다.
#include <stdio.h>
int main(void)
{
int ary[5];
printf("ary의 값 : %u\t", ary); // 주소로서의 배열명의 값
printf("ary의 주소 : %u\n", &ary); // 배열의 주소
printf(" ary+1 : %u\t, ary+1");
printf(" &ary+1 : %u\n, &ary+1");
return 0;
}
실행결과에서 알 수 있듯이 ary가 주소로 쓰일 때와 ary에 주소 연산자를 사용한 &ary의 값은 모두 배열의 시작 위치입니다. 그러나 가리키는 대상이 다르므로 두 주소에 1을 더한 결과는 다릅니다. ary 자체가 주소로 쓰일 때는 첫 번째 요소를 가리키므로 가리키는 대상의 크기는 4가 됩니다. 반면에 배열의 주소 &ary는 배열 전체를 가리키므로 가리키는 대상의 크기는 20이 됩니다. 이 둘의 차이를 명확히 구분하려면 다음 규칙을 이해해야 합니다.
배열의 크기와 배열 요소의 개수
배열의 주소가 가리키는 대상의 크기는 4바이트 * 배열 요소의 수로 계산(4*5=20)합니다. 용어와 관련해서 이 책에서 배열의 크기는 메모리에 할당된 크기(전체 바이트 수)로 씁니다. 따라서 배열 요소의 개수와 함께 쓰면 혼동될 수 있을 듯합니다. 배열의 크기라는 말이 일반적으로 요소의 개수(저장 가능한 데이터 수)로 표현하지만 C에서는 배열의 메모리 크기도 알아야 하므로 구분 지어 이해하는 것이 좋겠습니다.
배열은 전체가 하나의 논리적인 변수입니다.
배열도 일반 변수처럼 크기와 형태에 대한 정보를 가집니다. 다만 배열은 다양한 선언이 가능하므로 선언 방법에 따라 크기와 형태가 다를 수 있습니다. 예를 들어 다음과 같은 배열이 있다고 합시다. 이때 배열 ary는 크기가 20바이트며 'int형 변수 5개의 배열'이란 자료형의 정보를 가집니다. 배열 전체가 하나의 변수와 같은 역할을 하므로 변수에 사용하는 연산자를 배열에도 쓸 수 있습니다.
단. 배열은 논리적인 변수이므로 일반 변수처럼 대입 연산자 왼쪽에 사용하는 것은 불가능합니다.
배열의 주소에 정수를 더하면 배열 전체의 크기를 곱해서 더합니다.
'프로그래밍언어 > C 언어' 카테고리의 다른 글
| [혼자 공부하는 C언어] 함수 포인터의 개념 (0) | 2022.12.15 |
|---|---|
| [혼자 공부하는 C언어] 2차원 배열과 배열 포인터 (0) | 2022.12.13 |
| [혼자 공부하는 C언어] 이중 포인터 활용 2 : 포인터 배열을 매개변수로 받는 함수 (0) | 2022.12.13 |
| [혼자 공부하는 C언어] 이중 포인터 활용 1 : 포인터 값을 바꾸는 함수의 매개변수 (0) | 2022.12.13 |
| [혼자 공부하는 C언어] 이중 포인터 개념 (0) | 2022.12.13 |