컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -

Slides:



Advertisements
Similar presentations
제철고 프로그래밍언어 2015 가을학기 강의 #2 Python 변수, 입출력, 배열 박성우 POSTECH 컴퓨터공학과 2015 년 9 월 30 일.
Advertisements

Chapter 12. 배열. 배열  동일한 항목들이 동일한 크기로 연속적으로 메모리에 저장되는 구조  동일한 자료 유형이 여러 개 필요한 경우에 이용할 수 있는 자료 구조.
1 08 배열. 한국대학교 객체지향연구소 2 C 로 배우는 프로그래밍 기초 2 nd Edition 배열  동일한 자료유형의 여러 변수를 일괄 선언  연속적인 항목들이 동일한 크기로 메모리에 저장되는 구조  동일한 자료 유형이 여러 개 필요한 경우에 이용할 수 있는.
1. 2 차원 배열  배열은 동일한 데이터 유형으로 여러 개의 변수를 사용할 경우 같은 이 름으로 지정하여 간편하게 사용할 수 있도록 하는 것으로서 앞에서 1 차원 배열을 공부하였습니다.  2 차원 배열은 바둑판을 생각하면 되며, 1 차원 배열에서 사용하는 첨자를 2.
1 구조체 윤 홍 란 컴퓨터 프로그래밍 2 구조체 정의  구조체란 ? o 서로 다른 형의 변수들을 하나로 묶어주는 mechanism. (cf. 배열 : 같은 형의 변수들을 하나로 묶어주는 mechanism) o 예 : 카드의.
포인터란? 사전적 의미로써 지시자 혹은 가리키는 것으로 풀이할 수 있으나, C프로그래밍 언어에서는 메모리의 주소를 저장하는 변수이다. 포인터 자체가 하나의 변수이기 때문에 포인터도 메모리 내에서 선언이 되며 일반 상수를 저장하는 변수가 아닌 주소값을 저장하는 변수라는 점에서.
ㅎㅎ 구조체 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스 구조체 배열.
ㅎㅎ 구조체 C++ 프로그래밍 기초 : 객체지향의 시작 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스
슬라이드 1~21까지는 각자 복습! 슬라이드 22부터는 수업시간에 복습
쉽게 풀어쓴 C언어 Express 제11장 포인터 C Express.
쉽게 풀어쓴 C언어 Express 제11장 포인터 C Express Slide 1 (of 27)
Power C++ 제6장 포인터와 문자열.
제 9 장 포인터.
쉽게 풀어쓴 C언어 Express 제11장 포인터 C Express.
쉽게 풀어쓴 C언어 Express 제11장 포인터 C Express.
Chapter 14 포인터.
쉽게 풀어쓴 C언어 Express 제11장 포인터 C Express.
제 9 장 구조체와 공용체.
-Part2- 제3장 포인터란 무엇인가.
C 6장. 함수 #include <stdio.h> int main(void) { int num;
11장 구조체와 열거형 구조체의 정의 구조체 변수의 선언 구조체 초기화 및 사용 구조체 재정의 포인터를 이용해서 구조체 사용
윤 홍 란 포인터 윤 홍 란
C 8장. 포인터 #include <stdio.h> int main(void) { int num;
자료 구조: Chapter 3 (2)구조체, 포인터
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
개정판 누구나 즐기는 C언어 콘서트 제9장 포인터 출처: pixabay.
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 12. 포인터의 이해.
C++ 프로그래밍 년 2학기 전자정보공학대학 컴퓨터공학부.
C 프로그래밍.
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
포인터 활용 포인터 활용.
쉽게 풀어쓴 C언어 Express 제14장 포인터 활용 C Express.
10장 포인터와 문자열 포인터 기본 배열과 포인터 매개변수 전달방법 포인터와 문자열.
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
쉽게 풀어쓴 C언어 Express 제10장 배열 C Express Slide 1 (of 32)
제8장 배열 1부 8.1 배열 8.2 배열의 초기화 8.3 배열의 응용 8.4 정렬과 탐색 8.5 다차원 배열.
자료구조: CHAP 4 리스트 (3) 순천향대학교 컴퓨터공학과 하 상 호.
프로그래밍 랩 – 7주 리스트.
14장. 포인터와 함수에 대한 이해.
11장. 1차원 배열.
C 8장. 포인터 #include <stdio.h> int main(void) { int num;
처음으로 배우는 C 프로그래밍 제4부 복합 데이터 형 제 8 장 배열, 주소, 포인터.
사용자 함수 사용하기 함수 함수 정의 프로그램에서 특정한 기능을 수행하도록 만든 하나의 단위 작업
박성진 컴퓨터 프로그래밍 기초 [09] 배열 part 1 박성진
13. 포인터와 배열! 함께 이해하기 IT응용시스템공학과 김 형 진 교수.
3장 상수 변수 기본 자료형 키워드와 식별자 상수와 변수 기본 자료형 형변환 자료형의 재정의.
쉽게 풀어쓴 C언어 Express 제14장 포인터 활용 C Express Slide 1 (of 22)
19. 함수 포인터와 void 포인터.
3장. 변수와 연산자 교안 : 전자정보통신 홈페이지 / 커뮤니티/ 학술세미나
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
포인터 1차원 배열과 포인터 2차원 배열과 포인터 문자열 배열과 포인터 포인터 배열
컴퓨터 프로그래밍 기초 - 5th : 조건문(if, else if, else, switch-case) -
김선균 컴퓨터 프로그래밍 기초 - 7th : 함수 - 김선균
컴퓨터 프로그래밍 기초 - 8th : 함수와 변수 / 배열 -
8주차: Strings, Arrays and Pointers
5강. 배열 배열이란? 배열의 문법 변수와 같이 이해하는 배열의 메모리 구조의 이해 레퍼런스의 이해 다차원 배열
Chapter 09. 포인터 1.
Chapter 10 데이터 검색1.
컴퓨터 프로그래밍 기초 - 9th : 배열 / 포인터 -
구조체(struct)와 공용체(union)
Summary of Pointers and Arrays
Numerical Analysis Programming using NRs
Chapter 11 구조체.
실습과제 (변수와 자료형, ) 1. 다음 작업 (가), (나), (다)를 수행하는 프로그램 작성
김선균 컴퓨터 프로그래밍 기초 - 12th : 문자열 - 김선균
어서와 C언어는 처음이지 제21장.
개정판 누구나 즐기는 C언어 콘서트 제13장 동적 메모리 출처: pixabay.
13. 포인터와 배열! 함께 이해하기.
Pointers summary.
2019 2학기 9장 배열과 포인터 1. 주소, 주소연산자(&) 2. 포인터, 역참조연산자(*) 3. 배열과 포인터.
Presentation transcript:

컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 - 김선균 (kyun@kangwon.ac.kr) 2017. 05. 31

< 목 차 > 선택정렬 vs 버블정렬 포인터의 개념 포인터의 선언 및 간접 참조 연산자 배열과 포인터 < 목 차 > 선택정렬 vs 버블정렬 포인터의 개념 포인터의 선언 및 간접 참조 연산자 배열과 포인터 포인터를 응용한 swap 함수 포인터 응용 예제 문자열 표현 방법 문자열 함수 활용

0. 정렬 – 선택 정렬(Selection Sort) 선택 정렬 – 정렬이 안된 숫자 중에서 최소 값을 선택하여 배열의 첫 번째 요소와 교환

0. 정렬 – 선택 정렬(Selection Sort) 선택 정렬 프로그래밍

0. 정렬 – 선택 정렬(Selection Sort)

0. 정렬 – 버블 정렬(Bubble Sort) 버블 정렬 인접한 레코드가 순서대로 되어 있지 않으면 교환 전체가 정렬될까지 비교/교환 계속

0. 정렬 – 버블 정렬(Bubble Sort) 버블 정렬 프로그래밍

0. 정렬 – 버블 정렬(Bubble Sort) 버블 정렬 프로그래밍

1. 포인터의 개념 포인터 변수에는 값을 저장... 포인터에는 주소를 저장 주소 – 컴퓨터 상에서 메모리의 위치 주소를 계산하는 연산자 : & 변수 i의 주소 : &i 포인터의 생성 : [자료형] *[이름] = [주소 값]; 포인터는 꼭 선언과 동시에 초기화가 이루어져야 한다. ex) int a; // 변수의 생성 ex) int *pa = &a; // 포인터 생성 및 초기화

2. 포인터의 선언 및 간접 참조 연산자 간접 참조 연산자( * ) 포인터가 가리키는 값을 가져옴 포인터 생성 시 쓰는 *과는 다른 의미 포인터의 선언과 간접 참조 연산자의 차이점 포인터의 선언 : [자료형] *[이름] = [주소 값] 간접 참조 연산자 : *[포인터 이름]

2. 포인터의 선언 및 간접 참조 연산자 #include <stdio.h> int main(void) { int i = 10; int *pi = &i; printf(“i = %d, pi = %u\n”, i, pi); (*pi)++; *pi++; return 0; } i = 10, pi = 4290777068 i = 11, pi = 4290777068 i = 11, pi = 4290777072

3. 포인터와 배열 배열의 이름은...? 배열의 첫 번째 값의 주소를 의미한다. 배열의 이름 또한 주소 값을 의미하므로, 굳이 따지자면 포인터의 역할을 한다고 말할 수 있다.

3. 포인터와 배열 #include <stdio.h> int main(void) { int a[] = {10, 20, 30, 40, 50}; printf(“&a[0] = %u\n”, &a[0]); printf(“&a[1] = %u\n”, &a[1]); printf(“&a[2] = %u\n”, &a[2]); printf(“a = %u\n”, a); // 배열의 이름이 어떤 주소 값을 가지는지 // 확인해보자. return 0; } &a[0] = 4290777068 &a[1] = 4290777072 &a[2] = 4290777076 a = 4290777068

3. 포인터와 배열 #include <stdio.h> a = 4290777068 int main(void) { int a[] = {10, 20, 30, 40, 50}; printf(“a = %u\n”, a); printf(“a+1 = %u\n”, a+1); printf(“*a = %d\n”, *a); printf(“*(a+1) = %d\n”, *(a+1)); // 그렇다면 여기서 a[1] == *(a+1)과 같은 의미겠지요.. return 0; } a = 4290777068 a+1 = 4290777072 *a = 10 *(a+1) = 20

4. swap() 함수 구현 – 일반 변수 사용 #include <stdio.h> int swap(int x, int y); int main(void) { int a = 100, b = 200; printf(“main() a = %d, b = %d\n”, a, b); swap(a, b); return 0; } void swap(int x, int y) { int temp; printf(“swap() x = %d, y = %d\n”, x, y); temp = x; x = y; y = temp; } main() a = 100, b = 200 swap() x = 100, y = 200 swap() x = 200, y = 100

4. swap() 함수 구현 – 포인터 사용 #include <stdio.h> int swap(int *x, int *y); int main(void) { int a = 100, b = 200; printf(“main() a = %d, b = %d\n”, a, b); swap(&a, &b); return 0; } void swap(int *x, int *y) { int temp; printf(“swap() x = %d, y = %d\n”, *x, *y); temp = *x; *x = *y; *y = temp; } main() a = 100, b = 200 swap() x = 100, y = 200 swap() x = 200, y = 100 main() a = 200, b = 100

5. 포인터 응용 예제 #include <stdio.h> // 기울기와 y절편을계산 int get_line_parameter(int x1, int y1, int x2, int y2, float *slope, float *yintercept) { if( x1 == x2 ) return -1; else { *slope = (float)(y2 - y1)/(float)(x2 - x1); *yintercept = y1 - (*slope)*x1; return 0; } int main(void) float s, y; if( get_line_parameter(3, 3, 6, 6, &s, &y) == -1 ) printf("에러\n"); else printf("기울기는 %f, y절편은 %f\n", s, y); 기울기는 1.000000, y절편은 0.000000

6. 문자열의 표현 방법 문자 : 문자는 보통 한 글자를 의미 문자열 : 문자 + 배열로 여러 개의 문자가 나열된 것을 의미 ex) ‘A’, ‘S’, ‘C’ 문자열 : 문자 + 배열로 여러 개의 문자가 나열된 것을 의미 ex) “Computer”, “Programming” 문자열 뒤에는 항상 ‘\0’(NULL) 문자가 존재한다.

6. 문자열의 표현 방법 문자열(문자 배열)을 만들고 연속으로 출력

6. 문자열의 표현 방법 문자열 중 일부를 수정하여 재 출력하는 프로그램

6. 문자열의 표현 방법 문자열 역순 출력하는 프로그램

7. 문자열 함수 활용 – getchar(), putchar()

7. 문자열 함수 활용 – gets(), puts()

7. 문자열 함수 활용 – strcpy(), strcat()

7. 문자열 함수 활용 – strcmp() 문자열의 비교 : strcmp()

7. 문자열 함수 활용 – strcmp()

4. Q&A