이번 강좌에서는 배열에 대해 알아볼까 합니다.
배열은 변수의 업그레이드 버전인데요!
제가 처음 변수를 사용할때 변수는 주워온 상자다 라고 했습니다.
배열은 그 주워온 상자를 이어붙힌거라고 생각하시면 될것같네요
그림으로 따지면
이렇게 볼 수 있겠네요!
위의 그림과 같은 배열은 "5개짜리 배열이다"라고 말할수있겠네요
이 배열은 어떻게 만들까요?
자료형 배열이름[배열크기];
이렇게 만들 수 있습니다!
변수처럼 사용할수 있지만 배열은 말했다싶이 변수의 묶음이므로
배열의 몇번째 요소인지를 정해주고 사용해야겠지만 말이죠!
자 그럼 아래 그림처럼 "5칸 배열"에 임의의 수가 할당되어있습니다.
그럼 여기서 질문을 하나 하겠습니다! 이 배열의 이름을 arr이라고 했을때
arr배열에서 98은 몇번째 요소인가요??
너무쉽다고요? 아~ 4번째요소?
땡!!
3번째 요소입니다.
우선 이 n번째 요소의 n을 인덱스(index) 라고 부릅니다
그리고 이 인덱스는 1부터 시작이 아니라
항상 0부터 시작합니다
그러니까
이 arr배열에서는
32가 0번째요소,
58이 1번째요소,
72가 2번째요소,
98이 3번째요소,
64가 4번째요소가 되는것이죠
자 이제 인덱스라는 개념도 알았으니 이제 배열의 특정한 인덱스에 있는 값을 사용해보겠습니다
이 배열 arr에서 72와 64를 더한 값을 출력하고 싶습니다.
그럼 어떻게 하면 될까요?
printf("%d", arr[2] + arr[4]);
이렇게 arr뒤에 대괄호를 넣고 사용할 값의 인덱스를 넣어주면 됩니다.
자 그럼 또하나를 알려드리겠습니다.
우리가 지금까지 char이라는 자료형을 배웠었습니다.
기억하시나요? char은 1글자의 문자를 담을 수 있습니다
'A' 한글자 'B'한글자 이런식으로 말이죠!
그런데 우리는 문자열!이라는 A한글자 말고
"ABCDEFG"라는 문자열을 넣고싶단말이죠?
어떻게 표현하면 될까요?
이걸 바로 char형의 배열!을 사용하면 해결할수있습니다!
#pragma warning(disable:4996)
#include <stdio.h>
int main()
{
char str[100];
scanf("%s",str);
printf("%s",str);
}
자 이렇게하면 어떻게 될까요?
scanf의 str에 &을 안붙혔으니까 오류가 난다고요?
아닙니다. 지금은 깊게 들어가지 않고 설명하겠습니다만
문자열을 입력받을때는 str에 &을 안붙혀도 됩니다.
물론 문자열이 아니라 문자 한글자를 특정한 요소로 받고싶다면
scanf("%c",&str[요소번호]);
이렇게 바꿔줘야 하겠지만 말이죠
위의 코드는 정상적으로 문자열이 str배열의 앞요소부터 한글자씩 들어가게되고
printf함수로 %s포맷을 통해 str문자열을 출력하게 됩니다.
자 그럼 여기서 궁금증 하나!
변수는 편하게 선언이랑 할당을 동시에 하던데.. 배열은 안되나요..?
됩니다! 아래처럼 하시면 됩니다!
int arr[10] = {0,1,2,3,4,5,6,7,8,9};
이렇게 하면 앞에서부터 값이 들어가게됩니다!
그리고 위에 코드처럼 int형 배열 arr을 길이를 10으로 할당을 해줬다면
10 이상의 인덱스를 사용하려고 하면 에러가 납니다.
배열의 길이보다 더 큰 인덱스를 사용하려고 하니 당연하죠!
그러니 배열의 길이를 얼마나 쓸건지가 확실하지 않다면 100정도로 크게 잡아놓으신 후
쓸만큼만 쓰시면 되는겁니다!
예를들어 배열을 쓸건데 30개를 쓸지 40개를쓸지 정확하지가 않다고 칩시다
만약 사용자가 -1을입력할때까지 숫자를 계속 입력받아서 배열에 넣어야합니다.
사용자가 -1을 언제 입력하느냐에따라서 배열을 얼마나 쓸지가 바뀌겠죠?
그럴때는 대략적으로 "아무리 그래도 100번이상 -1이 아닌수를 입력하겠어?" 라고 생각하신후
배열길이를 100으로 해서 만든 후 쓰시면 되는겁니다!
"아니야 100번이상 입력할수도 있을것같아 그럼 설마 200번 이상 입력하겠어?"
라고 생각된다면 배열의 길이를 200번으로 하시면 됩니다!
왜냐하면 배열의 길이는 유동적으로 늘리거나 줄일수 없기때문이죠!
참고로 배열을 선언할때 배열의 길이를 변수의 값으로 할 수 없습니다!
예를들어
#include <stdio.h>
int main()
{
int length = 100;
int arr[length];
}
이런 코드는 불가능하다는것을 알려드릴게요
하지만 이미 선언된 배열에 요소를 사용하기 위해서는
대괄호에 배열로 요소를 사용할수 있습니다!
#include <stdio.h>
int main()
{
int arr[10] = {0,1,2,3,4,5,6,7,8,9};
int idx = 3;
printf("%d",arr[idx]);
}
이렇게말이죠!
자 오늘은 여기까지하고 강좌를 마치겠습니다 수고하셨습니다!
배열도 가장 중요한 기능중에 하나이니 외워두시길 바라고
다음 강좌에서는 2차원배열에 대해 배우도록 하겠습니다!
끝!
'C' 카테고리의 다른 글
([C언어] 12강) define과 하드코딩 (0) | 2019.06.27 |
---|---|
([C언어] 11강) 2차원 배열 (0) | 2019.06.27 |
([C언어] 9강) while문과 do-while문 (0) | 2019.06.26 |
([C언어] 8강) 다중 for문 (2) | 2019.06.26 |
([C언어] 7강) for문과 continue (0) | 2019.06.26 |