728x90
1. 1차원 배열
배열(array)
: 같은 자료형의 데이터를 메모리 상에 연속적으로 저장하는 메모리 형
0(4byte) | 1(4byte) | 2(4byte) |
배열의 선언
int key[3];
자료형 | 변수이름 | 왼쪽괄호 | 원소의 개수 | 오른쪽괄호 |
int | key | [ | 3 | ] |
- 변수 초기화의 필요성
key[0] (4byte) |
key[1] (4byte) |
key[2] (4byte) |
? | ? | ? |
변수를 초기화 하지않으면 쓰레기 값이 저장되어
이를 인지하지 못하고 연산할 경우 심각한 문제가 발생할 수 있다.
2. 배열의 초기화와 값 설정
배열의 초기화 | 방법2) 값 설정 | |
방법 (1-1) 선언 시 초기화 | int key[3] = {3,5,7}; | int key[3] = {0,}; // 선언하면서 0으로 초기화 key[0] = 3; key[1] = 5; key[2] = 7; |
방법 (1-2) 선언 시 초기화 | int key[] = {3,5,7} |
문자열
0 (1byte) | 1 (1byte) | 2 (1byte) | 3 (1byte) | 4 (1byte) | 5 (1byte) |
v | a | l | u | e | \0 |
문자열의 경우 마지막 문자 뒤에 \0을 넣어 문장의 끝을 알려야한다.
배열의 초기화 | 방법2) 값 설정 | |
방법 (1-1) 선언 시 초기화 | char str[6] = "value"; | char str[6] = {0,}; // 선언하면서 0으로 초기화 str[0] = 'v'; str[1] = 'a'; str[2] = 'l'; str[3] = 'u'; str[4] = 'e'; |
방법 (1-2) 선언 시 초기화 | char str[] = "value"; 또는 char str[] = {'v','a','l','u','e'}; |
방법 2에서 0으로 초기화를 안해줬다면
str[5]="\0"; 을 추가해주어야 함.
아래 명령어를 이용하여 변수를 선언해주는 방법도 있다.
strcpy(string_key,"value");
배운 내용 테스트하기 - C
#include <stdio.h>
#include <string.h>
void main(int arc, char **argv){
int i = 0, size = 0;
int key1[3] = {3,5,7};
int key3[3] = {0,};
char string1[] ="value";
char string2[100] = {0,};
key2[0] = 3;
key2[1] = 5;
key2[2] = 7;
size = sizeof(key1) / sizeof(int);
printf("key1의 원소의 개수 : %d\n", size);
for(i = 0; i<size ; i++){
printf("%d-> %d\n",i,key1[i]);
}
size = sizeof(key2)/sizeof(int);
printf("key2의 원소의 개수 : %d\n", size);
for(i = 0; i<size ; i++){
printf("%d-> %d\n",i,key2[i]);
}
size = sizeof(string1)/sizeof(char);
printf("string1의 원소의 개수 : %d\n", size);
printf(string1 : %s\n",i,string1);
printf(string2,"strcpy로 복사하기");
size = sizeof(string2)/sizeof(char);
printf("string2의 원소의 개수 : %d\n", size);
printf(string2 : %s\n",i,string2);
}
3. 다차원 배열
다차원배열(Multi-Dimensional Array)
: 배열의 원소가 배열 자료형인 배열
[ 2차원 배열 ]
- 2차원 배열의 각 원소는 1차원 배열임.
행/열 | 0열 | 1열 | 2열 |
0행 | 3 | 5 | 7 |
1행 | 4 | 6 | 8 |
위는 2개의 행과 3개의 열로 구성되어 있는 2차원 배열이다.
배열의 초기화 방법을 알아보자
방법1) 배열의 초기화 | 방법2) 값 설정 |
int values[2][3] = {{3,5,7},{4,6,8}}; 또는 int values[2][3] = {3,5,7},{4,6,8}; |
int values[2][3] = {0,}; values[0][0] = 3; values[0][1] = 5; values[0][2] = 7; values[1][0] = 4; values[1][1] = 6; values[1][2] = 8; |
다차원 배열도 일차원 배열과 크게 다르지는 않다.
0(4byte) | 1(4byte) | 2(4byte) | 3(4byte) | 4(4byte) | 5(4byte) |
3 | 5 | 7 | 4 | 6 | 8 |
[ 3차원 배열 ]
int values[2][3][4]
-> 3행 4열짜리 2차원 배열 2개로 이루어진 3차원 배열
면 | 행/ 열 | 0열 | 1열 | 2열 | 3열 |
0 | 0행 | 1 | 2 | 3 | 4 |
1행 | 5 | 6 | 7 | 8 | |
2행 | 9 | 10 | 11 | 12 | |
1 | 0행 | 13 | 14 | 15 | 16 |
1행 | 17 | 18 | 19 | 20 | |
2행 | 21 | 22 | 23 | 24 |
배열 생성 방법, 초기화
//방법1 - 0으로 초기화
int multi_values[2][3][4] = {0,};
multi_values[0][0][0] = 1;
multi_values[0][0][1] = 2;
multi_values[0][0][2] = 3;
multi_values[0][0][3] = 4;
...
multi_values[1][2][0] = 21;
multi_values[1][2][1] = 22;
multi_values[1][2][2] = 23;
multi_values[1][2][3] = 24;
//방법2
int multi_values[2][3][4] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24};
//방법3
int multi_values[2][3][4] = {{ {1,2,3,4},
{5,6,7,8},
{9,10,11,12}
},
{ {13,14,15,16},
{17,18,19,20},
{21,22,23,24}
}};
반응형
'Study Log > 자료구조' 카테고리의 다른 글
[자료구조] 포인터의 의미와 사용법(참조연산자 *, 주소연산자 &) (0) | 2021.04.25 |
---|---|
[자료구조] 구조체의 정의와 선언 및 초기화 (0) | 2021.04.25 |
[자료구조] C프로그래밍 기법(1) - C의 단순 자료형 (0) | 2021.04.23 |
[자료구조] 알고리즘의 의미와 특성 (0) | 2021.04.23 |
[자료구조] 자료구조의 필요성, 자료구조 정의 및 분류, 추상자료형이란? (0) | 2021.04.10 |