처음으로 배우는 C 프로그래밍 제4부 복합 데이터 형 제 7 장 배열.

Slides:



Advertisements
Similar presentations
1.1 구조체란 1.2 중첩 구조체 1.3 구조체와 배열 1.4 구조체와 포인터 1.5 구조체와 함수 1.6 공용체와 열거형.
Advertisements

Chapter 12. 배열. 배열  동일한 항목들이 동일한 크기로 연속적으로 메모리에 저장되는 구조  동일한 자료 유형이 여러 개 필요한 경우에 이용할 수 있는 자료 구조.
Chapter 12 배열. 2 배열  의미  배열은 연속적인 항목들이 동일한 크기로 메모리에 저장되는 구조로 그 사용이 간편  배열은 동일한 자료 유형이 여러 개 필요한 경우에 이용할 수 있는 자료 구조 일반 변수가 단독주택이라면 배열은 아파트  크기  배열의.
1 08 배열. 한국대학교 객체지향연구소 2 C 로 배우는 프로그래밍 기초 2 nd Edition 배열  동일한 자료유형의 여러 변수를 일괄 선언  연속적인 항목들이 동일한 크기로 메모리에 저장되는 구조  동일한 자료 유형이 여러 개 필요한 경우에 이용할 수 있는.
1. 2 차원 배열  배열은 동일한 데이터 유형으로 여러 개의 변수를 사용할 경우 같은 이 름으로 지정하여 간편하게 사용할 수 있도록 하는 것으로서 앞에서 1 차원 배열을 공부하였습니다.  2 차원 배열은 바둑판을 생각하면 되며, 1 차원 배열에서 사용하는 첨자를 2.
ㅎㅎ 구조체 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스 구조체 배열.
ㅎㅎ 구조체 C++ 프로그래밍 기초 : 객체지향의 시작 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스
쉽게 풀어쓴 C언어 Express 제11장 포인터 C Express Slide 1 (of 27)
쉽게 풀어쓴 C언어 Express 제11장 포인터 C Express.
2장. 프로그램의 기본 구성. 2장. 프로그램의 기본 구성 2-1"Hello, World!" 들여다 보기 /* Hello.c */ #include int main(void) { printf("Hello, World! \n"); return 0;
9장. C 언어의 핵심! 함수. 9장. C 언어의 핵심! 함수 9-1 함수의 정의와 선언 main 함수 다시 보기 : 함수의 기본 형태 { } 그림 9-1.
제 9 장 구조체와 공용체.
컴퓨터 프로그래밍 기초 [Final] 기말고사
-Part2- 제3장 포인터란 무엇인가.
11장 구조체와 열거형 구조체의 정의 구조체 변수의 선언 구조체 초기화 및 사용 구조체 재정의 포인터를 이용해서 구조체 사용
C 8장. 포인터 #include <stdio.h> int main(void) { int num;
6장. printf와 scanf 함수에 대한 고찰
개정판 누구나 즐기는 C언어 콘서트 제9장 포인터 출처: pixabay.
5장 배열 작성자 : 변재현.
제15장 파일 입출력 문자열을 출력하는 여러가지 방법 (15-2쪽) 문자열만 처리하는 입출력 함수
제 6장. 생성자와 소멸자 학기 프로그래밍언어및실습 (C++).
누구나 즐기는 C언어 콘서트 제8장 배열.
5장. 참조 타입.
C 프로그래밍.
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
8장 함수 함수의 필요성 라이브러리 함수와 사용자 정의 함수 함수의 정의, 원형, 호출 배열을 함수 인자로 전달 재귀호출.
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
쉽게 풀어쓴 C언어 Express 제10장 배열 C Express Slide 1 (of 32)
처음으로 배우는 C 프로그래밍 제4부 복합 데이터 형 제 7 장 배열.
제8장 배열 1부 8.1 배열 8.2 배열의 초기화 8.3 배열의 응용 8.4 정렬과 탐색 8.5 다차원 배열.
14장. 포인터와 함수에 대한 이해.
11장. 1차원 배열.
C 8장. 포인터 #include <stdio.h> int main(void) { int num;
Introduction To Data Structures Using C
처음으로 배우는 C 프로그래밍 제4부 복합 데이터 형 제 8 장 배열, 주소, 포인터.
C#.
사용자 함수 사용하기 함수 함수 정의 프로그램에서 특정한 기능을 수행하도록 만든 하나의 단위 작업
박성진 컴퓨터 프로그래밍 기초 [09] 배열 part 1 박성진
13. 포인터와 배열! 함께 이해하기 IT응용시스템공학과 김 형 진 교수.
3장 상수 변수 기본 자료형 키워드와 식별자 상수와 변수 기본 자료형 형변환 자료형의 재정의.
Java의 정석 제 5 장 배 열 Java 정석 남궁성 강의 의
쉽게 풀어쓴 C언어 Express 제14장 포인터 활용 C Express Slide 1 (of 22)
19. 함수 포인터와 void 포인터.
3장. 변수와 연산자 교안 : 전자정보통신 홈페이지 / 커뮤니티/ 학술세미나
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
2장. 변수와 타입.
C언어 프로그래밍의 이해 Ch08. 배열과 문자열.
5장 배열과 문자열 C 프로그래밍.
컴퓨터 프로그래밍 기초 - 8th : 함수와 변수 / 배열 -
9장. C 언어의 핵심! 함수. 9장. C 언어의 핵심! 함수 9-1 함수의 정의와 선언 main 함수 다시 보기 : 함수의 기본 형태 { } 그림 9-1.
^^ Computer Programming 2 dmpr.cnu.ac.kr/~daygax.
[ 단원 04 ] 반복과 배열.
데이터 동적 할당 Collection class.
제 7장 배열과 포인터 Hello!! C 언어 강성호 김학배 최우영.
7주차: Functions and Arrays
제 8장. 클래스의 활용 학기 프로그래밍언어및실습 (C++).
컴퓨터 프로그래밍 기초 - 9th : 배열 / 포인터 -
구조체(struct)와 공용체(union)
Summary of Pointers and Arrays
Numerical Analysis Programming using NRs
Static과 const 선언 조 병 규 한 국 교 통 대 학 교 SQ Lab..
제 4 장 Record.
1. 지역변수와 전역변수 2. auto, register 3. static,extern 4. 도움말 사용법
어서와 C언어는 처음이지 제21장.
개정판 누구나 즐기는 C언어 콘서트 제13장 동적 메모리 출처: pixabay.
13. 포인터와 배열! 함께 이해하기.
Pointers summary.
6 객체.
2019 2학기 9장 배열과 포인터 1. 주소, 주소연산자(&) 2. 포인터, 역참조연산자(*) 3. 배열과 포인터.
Presentation transcript:

처음으로 배우는 C 프로그래밍 제4부 복합 데이터 형 제 7 장 배열

일차원 배열 일차원 배열의 선언 배열의 첨자 배열 원소의 데이타형, 배열의 이름, 배열의 크기를 명시해야 함 배열 원소의 데이타형, 배열의 이름, 배열의 크기를 명시해야 함 예) char code[4]; double price[6]; float amount[100]; 배열의 원소들은 기억장소의 연속된 위치에 저장됨 배열의 첨자 배열의 원소의 위치를 색인(index) 혹은 첨자(subscript)라고 함 배열의 원소를 색인 변수 혹은 첨자 변수라고 부름 예) amount[0], amount[1], ... 배열의 이름 ?, 원소의 자료형 ?, 배열의 크기 ? 원소의 크기 ? amount amount[0] amount[1] amount[99]

일차원 배열 int array[5]; array array == &array[0] address 20 24 28 32 36

일차원 배열 배열을 사용한 성적 처리 예제 : [프로그램 7-2] #include <stdio.h> 배열을 사용한 성적 처리 예제 : [프로그램 7-2] #include <stdio.h> void main(void) { int i, grades[5], total = 0; for (i = 0; i <=4; ++i) printf(“Enter a grade:”); scanf(“%d”, &grades[i]); } printf(“\n The total of the grades”); for (i = 0; i <= 4; ++i) printf(“%d ”, grades[i]); total += grades[i]; printf(“is %d”, total);

배열의 초기화 배열의 초기화 변수의 초기화와 유사한 개념으로 배열의 원소들을 초기화 할 수 있음 배열의 초기치는 여러 개이므로 중괄호를 사용하여 표시함 일반적으로 프로그램의 첫 부분에서 배열을 초기화함 예) int grades[5] = {98, 87, 92, 79, 85}; char codes[6] = {'s', 'a', 'm', ’p', ‘l’, 'e’} ; char codes[ ] = {'s', 'a', 'm', ’p', ‘l’, 'e’} ; char codes[ ] = “sample”; double width[7] = {10.96, 6.43, 2.58, .86, 5.89, 7.56, 8.22}; double width[ ] = {10.96, 6.43, 2.58, .86, 5.89, 7.56, 8.22}; static int temp[4] = {10, 20, 30, 40}; static float temp[4] = {98.6, 97.2, 99.0, 101.5};

배열의 초기화 주의할 점 초기치는 나열된 순서대로 배열의 원소에 저장되며, 초기치가 모자라면 뒷부분의 배열 원소는 0으로 초기화됨 문자 배열의 초기화 char codes[6]={'s', 'a', 'm', ‘p’, 'l', 'e’} ; 대신에 간단히 char codes[ ]=“sample”; 형식으로 할 수 있으며, 맨 뒤 원소는 \0로 채워짐

배열의 전달 배열을 함수의 인자로 전달하는 방안 배열 원소의 전달 예) find_min(grades[2], grades[6]) 첨자 변수를 함수의 인자로 사용하여 원소의 값이 전달됨 예) find_min(grades[2], grades[6]) 배열 원소 grades[2]와 grades[6]이 함수 find_min( )에 전달됨 (값이 전달됨) 배열 전체의 전달 배열 명을 함수의 인자로 사용 이 경우 배열의 첫 원소의 주소가 함수로 전달됨 예) find_min(grades) 배열 grades 전체가 함수 find_min( )에 전달됨

배열의 전달 배열 인자 전달의 예 int nums[5]; char keys[256]; double units[500], prices[500]; /* 이 배열들에 대하여 다음의 함수 호출이 가능하다. */ find_max(nums); find_ch(keys); calc_tot(nums, units, prices); /* 인자로 전달된 배열에 직접 접근할 수 있음 */ int find_max(int vals[5]) char find_ch(char in_key[256]) void calc_tot(int arr1[5], double arr2[500], double arr3[500])

배열 전달 프로그램 예 [프로그램 7-3 ] #include < stdio.h > void main (void ) { int nums[5] = {2, 18, 1, 27, 16 }; void find_max(int [5]); find_max(nums); } void find_max (int vals[5]) int i, max = vals[0]; for ( i= 1; i <= 4; ++i ) if(max < vals[i]) max = vals[i]; printf ( “ The maximum value is %d”, max );

이차원 배열 이차원 배열 행과 열로 구성됨 예) 3행 4열로 구성되는 2차원 배열 : val 8 16 9 52 8 16 9 52 3 15 27 6 14 25 2 10 이차원 배열의 선언 예) int val[3][4]; 배열 내의 원소들은 첨자 변수 형태로 지칭하며, 스칼라 변수나 일차원 배열의 변수와 동일한 자격으로 사용됨 num = val[3][4]; val[0][0] = 62; new_num = 4* (val[1][0] – 5); sum_row0 = val[0][0] + val[0][1] + val[0][2] + val[0][3];

이차원 배열 지역 배열과 전역 배열 이차원 배열의 초기화 : 두 가지 방법 2차원 배열의 초기화는 행 우선 방식임 1차원 배열과 동일한 개념임 이차원 배열의 초기화 : 두 가지 방법 2차원 배열의 초기화는 행 우선 방식임 첫 행이 전부 초기화된 후에, 두 번째 행, …, 마지막 행 순서로 초기화됨 주어진 초기값이 모자라면 행 우선으로 초기화되고, 나머지 원소들은 널(null) 값으로 채워짐 int val[3][4] = { { 8, 16, 9, 52 }, { 3, 15, 27, 6 }, {14, 25, 2, 10 } }; int val[3][4] = { 8, 16, 9, 52, 3, 15, 27, 6, 14, 25, 2, 10 };

이차원 배열 2 차원 배열의 입출력 예 : [프로그램 7-6] 실행 결과 #include <stdio.h> void main(void) { int i, j, val[3][4] = { 8, 16, 9, 52, 3, 15, 27, 6, 14, 25, 2, 10}; printf(“\nDisplay of multiplied elements \n”); for (i = 0; i < 3; ++i) print (“\n”); for ( j = 0; j < 4; ++j) val[i][j] = val[i][j] * 10; printf(“%3d ”, val[i][j]); } 실행 결과 Display of multiplied elements 80 160 90 520 30 150 270 60 140 250 20 100

이차원 배열 2차원 배열의 전달 프로그램 예 : [프로그램 7-7] 실행 결과 : 8 16 9 52 3 15 27 6 #include <stdio.h> void main(void) { int i, j, val[3][4] = { 8, 16, 9, 52, 3, 15, 27, 6, 14, 25, 2, 10}; void display(int [3][4]); /*function prototype */ display(val); } void display(int nums[3][4]) int row-num, col_num; for (row_num = 0; row_num < 3; ++row_num) for (col_num = 0; col_num <4; ++col_num) printf(“%4d\n”, nums[row_num][col_num]); printf(“\n”); 실행 결과 : 8 16 9 52 3 15 27 6 14 25 2 10

이차원 배열 10 6 4 다차원 배열 각 차원의 크기를 배열명 다음에 명시함으로써 생성됨 예) int response[10][4][6]; response[0][0][0] 10 6 response[9][3][5] 4 response[9][3][0]

자주 사용되는 에러들 배열의 선언을 하지 않았을 경우 배열의 첨자 영역을 벗어난 경우 invalid indirection error message 배열의 첨자 영역을 벗어난 경우 충돌(crash) 혹은 메모리로부터 접근 가능한 원소가 아니라는 메시지 출력 배열의 모든 원소를 검침할 만큼 반복문의 첨자 크기가 충분하지 못한 경우 배열의 원소가 10개인데 for 문의 인덱스가 충분하지 못한 경우 배열의 초기화를 생략한 경우 대부분의 컴파일러가 자동으로 0 값이 초기화되지만 그렇지 않을 수 도 있음