C언어/개념

[C] Array(배열) ··· (3)

thpop 2024. 11. 23. 14:17
반응형

지난 개념에서 이어진다.

(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