배열
배열은 저장 공간들이 나열되어 있는 형태입니다.
Ex) 값 4개를 저장하기 위해 저장공간을 4개 사용하는 것은 너무 많기에 크기가 4인 배열을 한 번 선언하여 사용
배열 선언 방법 3가지
int arr[3]; //크기가 3인 배열을 선언만 한 상태
int arr[] = {1, 2, 3}; //값을 3개 넣어 초기화한 상태
int arr[3] = {1, 2, 3}; //크기가 3인 배열을 선언하여 초기화한 상태
배열 인덱스
int arr[5] = {1, 2, 3, 4, 5}; //크기가 5인 배열을 초기화
for(int i = 0; i < sizeof(arr)/sizeof(int); i++) {
printf("arr[%d] : %d\n", i, arr[i]); //배열의 값을 출력
}
sizeof(arr)를 sizeof(int)로 나누는 이유는?
=> 위의 코드로 보면 4바이트짜리가 5칸 있기 때문에 sizeof(arr)는 20이 됩니다. 그래서 sizeof(int)를 나눠줍니다.
* 인덱스가 0부터 시작하는 이유는?
-> "*(arr + 1)" 은 arr배열의 시작에서 1칸 뒤의 값을 읽어오라는 의미입니다.
하지만 *,(),+ 등 많은 연산자를 사용하게 됩니다.
그래서 대괄호만 사용하여 배열의 값을 출력할 수 있는 arr[1]을 사용하게 되었습니다.
Ex) arr[0] = *(arr + 0) 으로 나타낼 수 있으며 배열의 시작 값을 나타냅니다.
문자열 배열
문자 배열을 선언할 때는 널문자를 포함해서 크기를 선언해야한다.
char arrData[6] = "korea";
printf("%s\n", arrData);
-널문자 : '\0'으로 표현하며, 배열의 끝을 알려주는 문자 (문자열 중간에 널문자가 오면 그 전 문자까지만 출력됨)
<string.h>
char arrData[6] = "korea";
strcpy_s(arrData, sizeof(arrData), "south");
printf("%s\n", arrData);
printf("%d\n", strlen(arrData));
if(strcmp(arrData, "south") == 0) {
printf("두 문자열은 동일합니다.\n");
}
- strcpy_s(배열명, sizeod(배열명), 값) : 문자열 배열의 값을 변경
- strlen(배열명) : 널문자를 제외한 데이터의 길이
- strcmp(값1, 값2) : 값1과 값2가 같으면 0을 반환
배열 예제
① 주소값 출력
int arData[3] = {1, 2, 3};
int length = sizeof(arData) / sizeof(int);
printf("%p\n", arData);
printf("%p\n", arData+1);
printf("%p\n", arData+2);
printf("%p\n", &arData[0]);
printf("%p\n", &arData[1]);
printf("%p\n", &arData[2]);
② 1~5까지 출력, 5~1까지 출력
int arrData[5] = {0, }; //모두 0으로 초기화
for (int i = 0; i < sizeof(arrData)/sizeof(int); i++) {
arrData[i] = i + 1;
printf("%d\n", arrData[i]);
}
for (int j = 0; j < sizeof(arrData)/sizeof(int); j++) {
arrData[j] = arrDataSIZE - j;
printf("%d\n", arrData[j]);
}
③ A~E 출력
char arrAlpha[5] = {' ',};
for (int i = 0; i < sizeof(arrAlpha)/sizeof(char); i++) {
arrAlpha[i] = (char)(65 + i);
printf("%c\n", arrAlpha[i]);
}
감사합니다!
2021.08.03
'C언어' 카테고리의 다른 글
[자료구조 - C언어] 정렬(Sort) - Bubble, Insertion, Selection (0) | 2021.08.30 |
---|---|
[C언어] 로또 번호 뽑기 (0) | 2021.08.17 |
[C언어] 구조체(2) - 예제 (0) | 2021.08.08 |
[C언어] 구조체(1) (0) | 2021.08.07 |
[C언어] 교통카드, 카페 주문하기 예제 (0) | 2021.08.02 |