티스토리 뷰

Language/C 언어

C언어의 배열 사용방법

데브훈96 2020. 2. 9. 02:24

안녕하세요, IT디자이너입니다. 

 

이번에는 C언어에서 배열을 사용하는 방법에 대해서 포스팅하겠습니다. 

 

배열이란 "동일한 데이터 타입을 모아놓은 것"으로 설명드릴 수 있겠습니다. 하지만 선언방법부터 접근 방법까지 일반적인 변수들과는

차이가 있습니다. 

 

만약 여러분인 동일한 데이터 타입의 변수를 100개 아니 1000개 생성해야 할 경우에는 어떻게 하실 건가요?? 마치 지옥과도 다름없으실 겁니다.

 

이것을 해결하는 방법이 바로 배열입니다. !! 자 이제 배열에 대해서 설명드리도록 하겠습니다. 

 

1. 배열선언과 사용방법

배열은 1차원배열부터 2차원, 3차원과 같이 다차원 배열이 있습니다. 먼저 1차원 부터 설명드리도록 하겠습니다. 

 

int num1[5] = {1,2,3,4,5};

int num2[] = {1,2,3,4,5};

배열의 선언방법은 크게 2가지가 있습니다. 위 처럼 먼저 데이터를 삽입하여 초기화하는 방법이 있는데요, 중괄호에 있는 값들을 

"초기화 리스트" 라고 합니다. 

 

즉, 초기화 리스트로 배열을 초기화하는 방법이 있는데요 만약 초기화 리스트가 있다면은 대괄호를 꼭 써줄 필요는 없습니다. 

 

배열을 출력하는 방법 또한 간단합니다. 

 

int num[] = {1,2,3,4,5};

printf("%d",num[0]);
printf("%d",num[1]);
printf("%d",num[2]);
printf("%d",num[3]);
printf("%d",num[4]);

배열의 인덱스 시작은 무조건 '0' 부터 시작합니다.  즉 배열의 길이가 '5'일 경우에는 배열은 0~4까지 선언됩니다. 

 

또한 여러분들이 배열을 사용하실 경우 배열의 크기와 길이가 필요할 경우가 있습니다. 

 

배열의 크기 값

위 사진처럼 배열의 크기는 (배열의 수)*(배열의 데이터 타입) 으로 결정됩니다. 여기서 배열의 길이를 구하려면은

 

배열의 길이 구하기

위 사진처럼 sizieof(int)의 길이로 나누어주시면 배열의 길이를 온전하게 얻을 수 있습니다. 

 

이렇게 얻어진 배열의 길이로 반복문을 만들어서 출력하거나 크기를 얻을 수도 있겠죠?

 

 

 

2. 문자열 배열 사용방법

여러분은 지금까지 "문자"를 입력하고 출력하는 방법에 대해서만 배워왔습니다. 하지만 이번에 배열을 배움으로서 "문자열"을 입력 받거나 출력할 수 있습니다. !

 

char str[] = "asdf";

prtinf("%s",str);

위에 나와있는 코드처럼 배열을 사용하여 "asdf"라는 문자열을 초기화하였습니다.  또한 출력 시 "%s"라는 문자열 출력을 위한 서식 지정자를 사용하였습니다. 

 

입력 방법도 간단합니다. !

char str[5];

scanf("%s",str);

위 코드처럼 char 데이터타입의 배열을 선언하여 scanf() 함수 인자로 서식지정자 "%s"를 대입합니다. 그리고 '&' 없이 배열의 이름만 입력하는데요, 조금 이상하지 않나요? 지금까지 scanf() 함수를 사용할 경우 변수 앞에 '&'라는 주소 연산자를 사용하였습니다. 

 

하지만! 배열은 조금 다릅니다. 나중에 포인터를 배우게 될 경우 자연스레 알게될 내용인데요! 바로 배열의 이름은 주소를 가리킵니다. 

그렇기 때문에 '&' 주소 연산자는 필요가 없습니다. !

 

또한 문자열을 위한 배열은 마지막 인덱스에 NULL(0)이 자동으로 초기화가 됩니다. ! 그 이유는 C언어가 문자의 끝을 NULL로 판단하기 때문입니다. !

 

문자열 끝에 NULL이 자동으로 초기화됩니다. 

 

3. 다차원 배열 선언 방법

지금까지 1차원 배열에 대해서 설명드렸습니다. ! 1차원이 있다면은 2차원, 3차원이 있겠죠? 

1차원은 선, 2차원은 면, 3차원은 입체 라고 생각하시면 편하실겁니다. !!!!

 

int num [2][3] = 
 {
      {1,2.3}
      {4,5,6}
 }

2차원 배열은 첫번째 대괄호를 행(row)라고 하며, 두번째 대괄호를 열(column) 이라고 부릅니다. 이렇게 중괄호를 여러개 사용해서 행과 열을 구분하여 초기화할 수 있습니다. !

 

이렇게 보면은 메모리 상에서도 행과 열을 구분하여 저장하게 될것 같지만 아닙니다. ! 메모리상에서는 1차원 배열처럼 1열로 초기화가 됩니다. (이부분은 포인터 챕터에서 자세하게 다루도록 하겠습니다 .!)

 


이번 포스팅은 모든 언어에서 중요하고 유용하게 쓰이는 배열에 관하여 포스팅하였습니다 C언어의 꽃은 "포인터"라고 해도 과언이 아닌데요

배열은 포인터와 밀첩한 관계이니 정확하게 파악하시면 "포인터"를 공부할 때 유용하실 겁니다. !

 

감사합니다. !

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG more
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함