지난 개념에서 이어진다.
(https://thpop.tistory.com/74 / Array(배열) ··· (2))
- loop를 이용해 array 초기화하기
array는 자동으로 초기화되지 않는다.
즉 array는 특정 방식으로 초기화할 수 있는데, 이를 loop를 이용하여 초기화할 수 있다.
예시는 아래와 같다.
int a[5];
for(size_t i=0; i<5; i++) {
n[i] = 0;
}
이 예시는 어떤 array를 0으로 초기화하는 구문이다.
여기서 사용된 size_t는 크기를 나타내는 용도의 자료형이다. 이 자료형의 특성은 아래와 같다.
- size_t는 unsigned integral type(부호가 없는 정수형 타입)을 갖는다.
- array의 size와 indices(인덱스들)을 나타내는 데에 사용하는 것이 좋다.
- <stddef.h>(standard definition) 헤더에서 정의되지만, 다른 헤더들에도 일반적으로 포함되어있다.
- array indexing
특정 위치나 특정 원소를 나타내는 방법이다.
특징들은 아래와 같다.
대괄호([ ])안에 있는 위치 숫자(position number)를 index라고 칭한다.
인덱스를 사용할 때, array의 이름과 인덱스를 반드시 명시해야 한다.
array의 첫번째 원소는 인덱스 0을 갖는다.
인덱스는 반드시 정수형(integer)이나, 정수형 표현식(integer expression)을 가져야 한다.
예시는 아래와 같다.
a=5, b=6;
num[11] = 2; // an integer index
num[a+b] = 2; // an integer expression index, same result
b = num[1]; // b have a first element of num
- array initializer 예시
(1) -
#include <stdio.h>
int main() {
int numbers[10]; //int numbers[10] = {0, };
for(int i=0; i<10; i++)
printf("%d ", numbers[i]);
printf("\n");
char hello[6] = "hello";
printf("%s\n", hello);
return 0;
}
위 코드를 실행하게 되면 array가 initialize되지 않아 이상한 값들(garbage values)들이 출력된다. 따라서 initialize를 해주어야 그런 현상이 발생하지 않는다.
또한 아래 부분을 다음과 같이 정의해도 오류가 발생한다.
char hello[6];
hello = "hello"
printf("%s\n", hello);
return 0;
" "를 이용한 intialization은 선언할 때만 가능하므로 오류가 발생한다.
(2) -
#include <stdio.h>
int main() {
int n[5];
for( size_t i=0; i<5; i++) {
n[i] = 0;
}
for( size_t i=0; i<5; i++) {
printf("%d ", n[i]);
}
printf("\n");
return 0;
}
size_t 대신에 int도 사용 가능하다.
다음으로 이어짐.
(https://thpop.tistory.com/76 / Array(배열) ··· (4))
'C언어 > 개념' 카테고리의 다른 글
[C] 최대 / 최소 찾기 (0) | 2024.11.23 |
---|---|
[C] Array(배열) ··· (4) (0) | 2024.11.23 |
[C] Array(배열) ··· (2) (0) | 2024.11.23 |
[C] Array(배열) ··· (1) (0) | 2024.11.23 |
[C] Microsoft Visual Studio를 이용해 c언어 코딩하기 (0) | 2024.07.07 |