300x250
C의 배열(array)은 배열 자체 그대로 사용하기에는 응용력이 많이 떨어지는 문법입니다.
그래서 2차원 배열로 확장하여 사용하곤 하는데
2차원 배열은 행렬논리적 구조를 가지지만
실제 메모리의 기억공간에서는 1차원 배열의 형태로 존재합니다.
그럼 C 배열의 기본적인 초기화 및 사용법을 알아보겠습니다.
2차원 배열의 선언 및 초기화
#include <stdio.h>
int main()
{
int double_array[2][3]={{1,2,3},{4,5,6}};
for(int i=0; i<2; i++)
{
for(int j=0; j<3; j++)
printf("%d\t", double_array[i][j]);
printf("\n");
}
return 0;
}
>>>
1 2 3
4 5 6
int double_array[2][3] 는 2차원 배열입니다.
{{1,2,3}, {4,5,6}} 의 값을 가지고 있으며
2*3의 크기를 가지고 있습니다.
즉 원래 배열의 선언이 {} 괄호 내에 값만 삽입하는 형태였다면
2차원 배열은 {} 괄호내에 또 {} 괄호를 삽입한 형태입니다.
2차원 배열의 값을 출력하기 위해 이중 for문을 작성합니다.
2차원 배열예제1 - 3명의 학생들의 4과목 점수 계산
#include <stdio.h>
int main()
{
double score[3][4];
double avg[3];
for(int i=0; i<3; i++){
printf("네 과목 점수를 입력하시오 >> ");
for(int j=0; j<4; j++){
scanf("%lf", &score[i][j]);
avg[i]+=score[i][j];
}
}
for(int i=0; i<3; i++){
avg[i]=avg[i]/4.0;
printf("%d번째 학생의 평균 : %.0lf\n", i+1, avg[i]);
}
return 0;
}
>>>
네 과목 점수를 입력하시오 >> 10 20 30 40
네 과목 점수를 입력하시오 >> 37 28 94 10
네 과목 점수를 입력하시오 >> 32 84 37 19
1번째 학생의 평균 : 25
2번째 학생의 평균 : 42
3번째 학생의 평균 : 43
위 코드는 3명의 학생들의 각각 4과목 점수의 평균을 구하는 코드입니다.
2차원 배열의 값은 이중 for문을 통해 출력되며
배열 avg에는 각 학생들의 평균값을 넣어줍니다.
2차원 배열 예제 2 - 2차원 배열을 행, 열 별로 출력하기
#include <stdio.h>
int main()
{
int yul[4][5]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};
int hang[5][4]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};
for(int i=0; i<4; i++){
for(int j=0; j<5; j++){
printf("%5d", yul[i][j]);
}
printf("\n");
}
printf("\n\n");
for(int i=0; i<4; i++){
for(int j=0; j<5; j++){
printf("%5d", hang[j][i]);
}
printf("\n");
}
return 0;
}
>>>
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
1 5 9 13 17
2 6 10 14 18
3 7 11 15 19
4 8 12 16 20
yul과 hang은 각각 1부터 20까지 값이 들어가 있는 2차원 배열입니다.
이들을 각각 다른 순서로 이중 for문을 사용해 값을 출력합니다.
2차원 배열 예제 3 - 문자 배열 선언과 초기화
#include <stdio.h>
int main()
{
char str[3][10]={"list","dict","exercise"};
int count;
count = sizeof(str)/sizeof(str[0]);
for(int i=0; i<count; i++)
printf("%s\n", str[i]);
return 0;
}
>>>
list
dict
exercise
2차원 배열 str의 첫 번째 인자는 문자열의 개수,
두 번째 인자는 문자열의 길이를 담당합니다.
[3] = 문자열의 개수
[10]=각 문자열의 길이
2차원 배열 예제 4 - 포인터 배열 선언과 초기화
#include <stdio.h>
int main()
{
const char *array[]={"hobbylist","class","is","best","of best"};
int count;
count = sizeof(array)/sizeof(array[0]);
for(int i=0; i<count; i++)
printf("%s\n", array[i]);
return 0;
}
>>>
hobbylist
class
is
best
of best
const는 상수 예약어입니다.
char * array는 포인터 배열이며
초기화나 사용법은 동일합니다.
다만 선언 법에 *를 넣어줘야 한다는 것과
각 값이 포인터로 참조된다는 것의 차이점이 존재합니다.
또한 문자열 상수는 포인터로써 역할할 수 있습니다.
300x250
'개발&코딩 > C' 카테고리의 다른 글
[C] 함수의 구조와 예제 모음 (0) | 2020.09.09 |
---|---|
C언어 반복문 예제와 기초 알아보기 - for,while,dowhile (0) | 2020.09.09 |
C언어 조건제어문 if문/else문 과 switch/case문 예제와 기초 (0) | 2020.09.09 |
C언어의 기초적인 구조와 자료형 그리고 입출력 (0) | 2020.09.09 |
[C] c의 정적변수와 외부변수 (0) | 2020.07.25 |
댓글