1 08 배열
한국대학교 객체지향연구소 2 C 로 배우는 프로그래밍 기초 2 nd Edition 배열 동일한 자료유형의 여러 변수를 일괄 선언 연속적인 항목들이 동일한 크기로 메모리에 저장되는 구조 동일한 자료 유형이 여러 개 필요한 경우에 이용할 수 있는 자료 구조
한국대학교 객체지향연구소 3 C 로 배우는 프로그래밍 기초 2 nd Edition 배열의 선언 배열의 선언은 다음과 같은 구문을 이용 주요 요소는 배열 변수명 ( 이름 ), 자료유형, 그리고 배열의 크기 ( 원소 수 )
한국대학교 객체지향연구소 4 C 로 배우는 프로그래밍 기초 2 nd Edition 배열의 크기와 첨자 배열 원소 (array element) 배열 score 에서 10 개의 자료형 int 가 저장되는 각각의 항목 첨자 배열 원소는 첨자 (index) 를 사용하여 참조 즉 첫 배열 원소는 항상 첨자가 0 이며, 차례로 1 씩 증가 배열 첨자는 유효한 값의 범위를 벗어나는 경우, 문제 발생 항상 배열 첨자의 사용에 주의 첨자 범위 : 0 ~ size-1
한국대학교 객체지향연구소 5 C 로 배우는 프로그래밍 기초 2 nd Edition 예제 8-1
한국대학교 객체지향연구소 6 C 로 배우는 프로그래밍 기초 2 nd Edition 배열의 초기화 배열을 선언하면서 각 원소의 값을 지정 : 배열 초기화 (initialization) 선언에서만 이용 가능 다음 문장은 잘못된 문장 int a[4]; a = {10, 30, 40, 50};
한국대학교 객체지향연구소 7 C 로 배우는 프로그래밍 기초 2 nd Edition 2X4 의 이차원 배열의 선언과 구조 다차원 배열
한국대학교 객체지향연구소 8 C 로 배우는 프로그래밍 기초 2 nd Edition 이차원 배열의 원소 참조 중첩된 반복문의 이용이 필요 제어변수 I 행 번호 제어변수 j 열 번호
한국대학교 객체지향연구소 9 C 로 배우는 프로그래밍 기초 2 nd Edition 예제 8-3
한국대학교 객체지향연구소 10 C 로 배우는 프로그래밍 기초 2 nd Edition 문자열 문자열은 일련의 문자를 앞 뒤로 인용부호 “” 로 둘러싸서 표기 문자열은 널 (null) 문자 (\0) 가 문자 배열의 마지막에 저장 문자열을 저장하는 배열의 크기는 저장되는 문자의 개수 보다 1 이 커야 함 만일 \0 문자가 없는 경우는 문자열로 취급하지 않음 문자 하나 하나를 배열에 저장하여 문자열을 표현 가능 반드시 프로그래머가 알아서 널 문자를 문자열의 마지막에 \0 저장 문자열 처리와 저장
한국대학교 객체지향연구소 11 C 로 배우는 프로그래밍 기초 2 nd Edition 문자열 출력 배열이름 문자열이 저장된 배열 이름을 이용하여 printf() 문을 이용 변환병세 %s
한국대학교 객체지향연구소 12 C 로 배우는 프로그래밍 기초 2 nd Edition 문자열의 끝은 \0 문자 \0 문자의 효과 문자열을 구성하는 각각의 문자를 출력하는 방법 출력의 제한을 널 (\0) 문자로 검사하면 편리
한국대학교 객체지향연구소 13 C 로 배우는 프로그래밍 기초 2 nd Edition 문자열의 표준 입력 함수 scanf 함수 scanf() 를 이용하여 공백 ( 스페이스 ) 이 없는 문자열을 표준입력으로 받아 문자 배열에 저장 함수 scanf() 에서 %s 의 변환 명세로 입력 받는 문자열은 문자가 시작되고 공백이 나오기 이전까지의 문자열 이름을 “ 홍 길동 ” 으로 입력하면 배열 name 에는 “ 홍 ” 만이 저장되는 문제가 발생 정수나 실수의 입력 때와는 다르게 변환명세 %s 에 대응하는 변수 앞에 주소를 의미하는 연산자 & 없이 바로 배열 이름을 기술 배열의 이름 자체가 주소를 의미하기 때문
한국대학교 객체지향연구소 14 C 로 배우는 프로그래밍 기초 2 nd Edition 한 줄의 입출력 함수 gets, puts 한 줄에 입력되는 모든 문자열을 입력하고 출력하기 위한 함수가 gets() 와 puts() 함수를 이용하려면 헤더 파일 stdio.h 파일을 포함 함수 gets() 는 입력 받은 한 줄을 인자로 기술하는 문자 배열에 저장하는 함수 그러므로 인자 배열의 크기는 표준입력 한 줄의 문자가 모두 입력되고 마지막에 널 문자가 입력되도록 충분히 커야 함 char line[81]; gets(line); puts(line);
한국대학교 객체지향연구소 15 C 로 배우는 프로그래밍 기초 2 nd Edition 예제 8-6
한국대학교 객체지향연구소 16 C 로 배우는 프로그래밍 기초 2 nd Edition 배열의 합 연산자 sizeof 의 이용 int arraysize = sizeof(x) / sizeof(x[0]); // 배열 원소의 수 = sizeof( 배열이름 ) / sizeof( 원소의 크기 )
한국대학교 객체지향연구소 17 C 로 배우는 프로그래밍 기초 2 nd Edition 예제 8-7
한국대학교 객체지향연구소 18 C 로 배우는 프로그래밍 기초 2 nd Edition 이차원 배열의 함수 인자 이용 4 행 3 열의 이차원 배열의 합 구하는 함수 함수 원형과 함수 정의의 헤더에서 배열의 첫 번째 크기를 제외한 다른 모든 크기는 반드시 기술되어야 함. 중첩된 반복 제어변수 i 는 행을 바꾸는 변수 제어변수 j 는 열을 바꾸는 변수로 사용
한국대학교 객체지향연구소 19 C 로 배우는 프로그래밍 기초 2 nd Edition 배열 원소 참조 중첩된 반복문의 이용이 필요 제어변수 I 행 번호 제어변수 j 열 번호
한국대학교 객체지향연구소 20 C 로 배우는 프로그래밍 기초 2 nd Edition 이차원 배열의 행 수 계산 행 수 함수 sum() 을 호출하려면 배열의 이름과 함께 행의 수가 필요 int rowsize = sizeof(x) / sizeof(x[0]); printf(" 함수에서 구한 2 차원 배열원소 합은 %.3lf 이다. \n", sum(x, rowsize));
한국대학교 객체지향연구소 21 C 로 배우는 프로그래밍 기초 2 nd Edition 예제 8-8
22 C 로 배우는 프로그래밍 기초 2 nd Edition