비주얼스튜디오, C언어 배열을 써보자.

반응형

여러분들은 현재 3월달 C언어 기초를 배우고 있을껍니다. 변수에 숫자를 저장하여, 하나씩 출력 말이지요.

배열을 쓰면 간단해집니다. 만약내가 10개의 숫자를 저장 후 출력해야한다고 생각해봅시다.

그러면 지금 단계에서 여러분은 변수 10개를 만들어 숫자들을 저장할 것입니다.

그치만 배열을쓰면 한줄로 끝낼 수 있습니다.

바로 코드로 넘어가볼까요?

 

#include 

int main(void) {

int i=1;
int j=2;
int k=3;

int array_1[3] = { 1,2,3 };

printf("변수로 출력하면?\n");
printf("%d %d %d\n", i, j, k);

printf("배열로 출력하면?\n");
for (i = 0; i < 3; i++) {
printf("%d ", array_1[i]);
}
printf("\n");

return 0;
}

 

처음 i, j, k에 각각 1,2,3을 저장합니다.

int array_1[3]은

정수형인 배열을 만들껀데

배열이름은 array_1입니다.

대 괄호안에 숫자는 내가 넣을 숫자의 개수입니다.

int array_1[3] = { 1,2,3 }; 

즉 3개의 정수를 넣는 배열을 만들껀데, 1,2,3 숫자를 넣겠다 이말입니다.

만약 배열에 5개의 숫자를 넣는다면

배열을 int array_1[5]로 선언해준 후 중괄호안에 숫자 5개를 넣어야겠죠?

 

첫번째 프린트문은 여러분들도 아실껍니다.

%d는 부호있는 10진수를 출력하는데, i, j, k에 저장된 변수를 출력하겠다는 이야기입니다.

 

두번째 배열문은 출력이 조금 독특합니다.

배열을 출력하려면 포문을 알아야합니다.

포문을 모르고도 할 수 있습니다. 그치만 포문도 알려드릴게요.

포문은 특정 동작을 반복할때 쓰는 이야기입니다.

 

i=0 i<3 i++

i는 0부터 시작하는데

3까지 다.

i++는 1개씩 증가시키겠다라는 명령어입니다.

 

자 그럼 봅시다.

 

 

for (i = 0; i < 3; i++) {
printf("%d ", array_1[i]);
}

일단 i=1부터 시작한다하면

i는 1인 상태이고

printf("%d ", array_1[0]);

을 출력한다면 array_1[0] 를 출력 해보면

1이 나옵니다.

 

여기서 질문이 나올꺼에요. 선생님 저는 배열의 첫번째 숫자를 출력하려하는데 왜 0부터 시작인건가요? 1부터 시작해야하는거 아닌가요?

 

여기서 다시 되돌아가봅시다.

int array_1[3] = { 1,2,3 };

 

3개의 숫자를 넣는 배열이고

1은 첫번째

2는 두번째

3은 세번째에 있는 숫자입니다.

 

그치만 이 숫자들을 출력할땐 자동으로 +1이 된다고 생각하세요.

그렇기때문에

array_1[0]은 1이고

array_1[1]은 2이고

array_1[2]는 3입니다.

 

자 그럼 아까 i=0일때

for (i = 0; i < 3; i++) {
printf("%d ", array_1[i]); 
}

이 포문이 한바퀴 돌변 i++을 시켜준다했습니다.

그렇다면 이제 i는 1이됩니다.

 

for (i = 0; i < 3; i++) {
printf("%d ", array_1[1]); 
}

을 하면 두번째 숫자인 2가 출력이 됩니다.

그리고 포문이 한바퀴 더돌아서 ++가 되면

i=2가 됩니다.

 

for (i = 0; i < 3; i++) {
printf("%d ", array_1[2]); 
}

이땐 세번째 숫자인 3이 출력이 됩니다.

 

그리고 i<3까지라고 선언해줬습니다.

i가 2에서 3이 넘어가는 순간에 for문은 끝이나는겁니다.

 

결과를 보시면

자 만약에 우리가 쓰는 숫자가 3개가아니라

10개라면?

단순한 printf 문으로 출력하면

변수10개를 직접 선언해서 숫자를 넣어줘야하지만,

배열을 쓴다면 한번에 넣을 수 있다는 장점이 있습니다.

 

이로써 배열을쓰는이유는

코드를 간결하게 할 수 있어 사용 할 수 있습니다.

추후에 포인터를 배우게되면 배열에 대한 필요성을 더욱더 느끼게 될 껍니다.

이제 변수를 조금더 키워볼까요?

 

#include 

int main(void) {

int i=315;
int j=21;
int k=32;
int n=12;
int m=84;

printf("변수로 출력하면?\n");
printf("%d %d %d\n", i, j, k, n, m);

return 0;
}

#include 

int main(void) {

int array_1[5] = { 32,123,412,125,328 };

printf("배열로 출력하면?\n");
for (int i = 0; i < 5; i++) {
printf("%d ", array_1[i]);
}
printf("\n");

return 0;
}

 

자 엄청 간결해지죠?

만약 변수가 점점 더늘어난다면 배열이 더 이득일 것입니다.

 

여기서 또 질문이 생기겠네요.

선생님 아까 for문안에 i앞에 int가 없었는데

왜 추가하셨나요?

 

한번 int를 지우고 코드를 실행해보겠어요?

작동이 안될껍니다.

포문안에 i에 대한 형식을 지정해줘야합니다.

소수점으로 증가할 수 있기때문에

i는 정수다 라는 약속을 하기위해 써준겁니다.

 

공부해보고 모르는 질문은 댓글로 받겠습니다.

구독 부탁드려요!

댓글

Designed by JB FACTORY