배열의 개념 및 활용
int score1, score2, score3, score3, score4 ... 와 같은 변수를 선언 시
연속되지 않은 주소에 메모리가 할당된다
4byte x n 개의 메모리가 할당
배열의 개념
연속한 주소에 동일한 자료형의 연속된 데이터를 동일한 이름으로 생성하는 것 인덱스(배열원소의 번호)로 데이터를 구분
배열의 선언과 초기화
int val[n];
- int: 자료형
- val: 배열 이름
- [n]: 지료의 개수
인덱스는 0부터 시작 잘못 사용시 심각한 에러가 발생할 수 있음 (오버플로우, 언더플로우)
1차원 배열의 선언과 초기화
int score[10];
| 4byte | 4byte | 4byte | 4byte | ... |
|---|---|---|---|---|
| score[0] | score[1] | score[2] | score[3] | ... |
- 총 10 개의 인엑스
- 4byte x 10개 = 40byte
int val[3] = {1, 2, 3};int val[3] = {1,};int val[3] = {0};int val[] = {1, 2, 3};
| 순서 | val[0] | val[1] | val[2] |
|---|---|---|---|
| 1 | 1 | 2 | 3 |
| 2 | 1 | 0 | 0 |
| 3 | 0 | 0 | 0 |
| 4 | 1 | 2 | 3 |
4번의 데이터는 가변으로 선언하여 데이터의 갯수 만큼 배열을 생성 가변 배열의 데이터는
sizeof()함수를 사용하여 크기를 출력할 수 있다
2차원 배열의 선언과 초기화
int score[2][5]; 행, 열
| 행/열 | 0 | 1 | 2 | 3 | 4 |
|---|---|---|---|---|---|
| 0 | score[0][0] | score[0][1] | score[0][2] | score[0][3] | score[0][4] |
| 1 | score[1][0] | score[1][1] | score[1][2] | score[1][3] | score[1][4] |
- 2개의 행과 5개의 열로 구성된 배열
- 총 2 x 5 = 10개의 요소
#include <stdio.h>
int main(void){
int i,st[5] = {1,2,3};
for (i = 0; i < 5; i++){
printf("st[%d]=%d \n",i,st[i]);
}
}
실행 결과:
st[0]=1
st[1]=2
st[2]=3
st[3]=0
st[4]=0
#include <stdio.h>
int main(void){
int score[] = {1,2,3};
int i, size;
size = sizeof(score)/sizeof(score[0]);
printf("size = %d \n", size);
for(i = 0; i < size; i++){
printf("score[%d] = %d \n",i,score[i]);
}
}
실행 결과:
size = 3
score[0] = 1
score[1] = 2
score[2] = 3