반응형
SMALL

학습 목표

배열과 기억공간의 표현을 이해할 수 있다.

char형 배열을 이해할 수 있다.

 

주요용어

char형 배열 : 문자열을 처리하기 위해 사용되는 배열

 

 

 

6.1.3 char 형 배열과 문자열

char형 배열

- 형식 : char 배열명 [문자열 길이 +1 ]

- 사용 예 : char str[12] 

- 의미 : 배열명이 str이고, 12문자 길이를 가진 char형 배열
char형 배열선언과 초기화

char name[ ] = " HONG GIL DONG";        >>> 문자열 단위로 초기화

char address[ ] = {'S', 'E', 'O', 'U', 'L', '\0'}; >>> 문자 단위로 초기화 ('\0' 문자를 삽입해야 함)
기억공간 표현

//char형 배열의 사용 예1

#include <stdio.h>
void main(){
   char name [] = "HONG GIL DONG";
   char adrs1[6] = {'S', 'E', 'O', 'U', 'L', '\0'};
// 마지막 요소를 \0로 함 

   char adrs2[6] = {'S', 'E', 'O', 'U', 'L'}; 
// 마지막 요소를 \0으로음 하지 않  
   printf("\n name : %s", name); 
   printf("\n adrs1 : %s", adrs1); 
   printf("\n adrs2 : %s", adrs2);   } 

 ** adrs1,2 가 동일하게 나오지만, adrs2 다음에 쓰레기 값이 붙을 수 있음

 

 

 

6.1.4 함수와 배열

 배열을 함수의 매개변수로 사용할 때는 함수 호출 시 첨자를 빼고, 배열명만 명시하여 호출해야 한다. 

1차원 배열을 매개변수로 갖는 함수의 헤더에는 배열의 크기를 명시하지 않아도 되며, 다차원 배열일 경우에는 가장 높은 차원의 크기를 생략할 수 있다.

 

// 2차원 배열이 함수의 매개변수로 사용된 예

#include <stdio.h> 
void score_sum(int gr[][5], int, int);
void main(){
   int score[2][5] = {{10, 20,30, 40,50},

                         {10, 10, 10, 10, 10}};
   score_sum(score,2,5);  }

void score_sum(int gr[][5], int row, int column){ 
   int sum[2] = {0}; 
   int i, j; 
   for(i=0; i <row; i++){ 
      for(j =0; j <column; j++) 
         sum[i] += gr[i][j]; 
      printf("sum[%d] = %d \n", i, sum[i]);    }    }

 

 

//3차원 배열이 매개변수로 사용된 함수 예

#include <stdio.h> 
void score_average(int gr[][2][3], int, int, int); 
void main(){ 
   int score[4][2][3] = {{{10, 20, 30}, {10,10,10}},  
                            {{0, 40, 50}, {10, 10, 10}},  
                            {{30,30,30},{50,50,50}}, 
                            {{20,20,20},{0,0,0}}}; 
   score_average(score, 4, 2, 3); } 
void score_average(int gr[][2][3], int size, int row, int column){ 
   int student_sum = 0, subject_sum = 0; 
   int subject_average = 0; 
   int i, j, k; 

  for(k=0; k < size; k++){ // 각 클래스에 대한 루프 
   student_sum = 0;
   for(i = 0; i < row; i++){ 
      subject_sum = 0;
      for(j=0; j < column; j++)       

// k번째 클래스의  j 번째 학생의 과목 점수 합 
         subject_sum += gr[k][i][j]; 

// k번째 클래스의 j번째 학생의 평균 점수 
      subject_average = subject_sum/column;
      printf("sudent%d average = %d \n", i +1, subject_average); 

// k번째 클래스의 전체 학생의 평균 점수 합 
      student_sum += subject_average;  }  

// 각 클래스의 평균 점수 출력 
   printf("class%d average = %d \n\n", k + 1, student_sum / row);   } }

반응형
LIST

+ Recent posts