학습 목표
배열과 기억공간의 표현을 이해할 수 있다.
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); } }
'방송통신대학 > C 프로그래밍' 카테고리의 다른 글
포인터변수의 선언과 참조 pointer variable Declaration (3) | 2020.06.08 |
---|---|
배열과 포인터 array, pointer (0) | 2020.06.07 |
다차원 배열 array (0) | 2020.06.05 |
1차원 배열 array (0) | 2020.06.04 |
자동, 정적, 외부, 레지스터 변수 variable (0) | 2020.06.03 |