본문 바로가기

programming language/C 언어

열혈 c프로그래밍 11-2번(배열의 크기 와 길이)

char형 1차원 배열을 선언과 동시에 다음 문장 내용으로 초기화하고 초기화 이후에는 저장된 내용을 출력하는 예제다.

Good time

11-2번을 처음 푼 오답풀이이다. 서식 문자 % c가 char형과 함께 쓰이며, 문자의 형태로 데이터를 출력또는 입력하라

라는 의미를 가진다.

기본 자료형 변수들이 선언과 동시에 초기화하는 것처럼! 배열도 가능하다!

배열의 초기화 방법은 총 세가지이다.

1. int arr [3] = {1,2,3};    //순차적으로 1 2 3을 초기화한다.    cf) 중괄호로 묶인 부분을 초기화 리스트라고 한다.

2. int arr [ ] = {1,2,3,4,5};  //컴파일러에 의해서 자동으로 5가 삽입이 된다. 이문장에서 볼 수 있듯이 초기화를 목적으로 초기화 리스트가 선언되면 배열의 길이 정보를 생략할 수 있다. 즉 위 문장은 int arr [5] = {1,2,3,4,5}; 와 동일하다.

3. int arr [5] = {1,2}; //3,4,5번째 배열 요소는 0으로 채워진다.  

 

배열의 길이 계산

int arr1 [5]={1,2,3,4,5};라 할 때, 배열 arr1의 크기는 sizeof(arr1) = 20이다. 즉 배열의 이름을 대상으로 하는 sizeof연산의 결과로는 '바이트 단위'의 배열 크기가 반환이 된다.

배열의 크기가 아닌 길이를 계산하고자 한다면, 

arr1 Len = sizeof(arr1) / sizeof(int);   이와 같은 문장이 필요하다. 배열 arr1의 길이를 계산하는 문장이다.

arr1 Len = 5가 될 것이다.

 

배열에서의 길이?

1차원 배열의 선언에 필요한 세 가지는 배열 이름, 자료형, 길이 정보이다.

즉 int sentence [4];의 문장이 있다면

 

int는 배열을 이루는 요소(변수)의 자료형.

sentence는 배열의 이름

[4]는 배열의 길이를 뜻한다.

 

즉 배열의 길이 계산을 통해 [ ]의 부분을 알 수 있다.

 

다양한 자료형의 배열.

int sentence [4];   // 길이가 4인 int형 1차원 배열 sentence

float sentence2 [7];  //길이가 7인 float형 1차원 배열 sentence2

double sentence3 [12];  //길이가 12인 double형 1차원 배열 sentence3

 

선언된 1차원 배열의 접근

int arr [3];    //길이가 3인  int형 1차원 배열 arr이다.

위의 배열을 대상으로 값을 저장할 때는 밑에 형태로 접근한다.

 

arr [0]=10;  //배열 arr의 첫 번째 요소에 10을 저장해라!

arr [1]=12;  //배열 arr의 두 번째 요소에 12를 저장해라!

arr [2]=14;  //배열 arr의 세 번째 요소에 14를 저장해라!

 


arr [1] 이 길이가 1인 배열일까, 배열에서 두 번째 요소의 값을 나타내는 것 일까라는 혼동이 있었는데 위의 개념 정리로 바로 잡을 수 있었다.

 

int arr [1];     //길이가 1인 int 형 배열 arr

arr [1] = 10; // 배열 arr의 두 번째 요소에 10을 저장.

 

다시 돌아와 11-2의 문제에서. 초기화 이후에 저장된 내용을 출력하라라고 하였는데, 나는 반복문을 통해 배열에 저장된 값을 출력할 것이고, 그러면 for문에서 조건식이 필요하다. 이 조건식은 i = 0일 때 (i <배열의 길이) 같은 꼴이 되어야 한다. 왜냐하면 배열 요소들의 개수는 배열의 길이와 같기 때문에 배열의 길이를 구해주는 것이다.