Download presentation
Presentation is loading. Please wait.
1
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
김선균
2
< 목 차 > 선택정렬 vs 버블정렬 포인터의 개념 포인터의 선언 및 간접 참조 연산자 배열과 포인터
< 목 차 > 선택정렬 vs 버블정렬 포인터의 개념 포인터의 선언 및 간접 참조 연산자 배열과 포인터 포인터를 응용한 swap 함수 포인터 응용 예제 문자열 표현 방법 문자열 함수 활용
3
0. 정렬 – 선택 정렬(Selection Sort)
선택 정렬 – 정렬이 안된 숫자 중에서 최소 값을 선택하여 배열의 첫 번째 요소와 교환
4
0. 정렬 – 선택 정렬(Selection Sort)
선택 정렬 프로그래밍
5
0. 정렬 – 선택 정렬(Selection Sort)
6
0. 정렬 – 버블 정렬(Bubble Sort) 버블 정렬 인접한 레코드가 순서대로 되어 있지 않으면 교환
전체가 정렬될까지 비교/교환 계속
7
0. 정렬 – 버블 정렬(Bubble Sort) 버블 정렬 프로그래밍
8
0. 정렬 – 버블 정렬(Bubble Sort) 버블 정렬 프로그래밍
9
1. 포인터의 개념 포인터 변수에는 값을 저장... 포인터에는 주소를 저장 주소 – 컴퓨터 상에서 메모리의 위치
주소를 계산하는 연산자 : & 변수 i의 주소 : &i 포인터의 생성 : [자료형] *[이름] = [주소 값]; 포인터는 꼭 선언과 동시에 초기화가 이루어져야 한다. ex) int a; // 변수의 생성 ex) int *pa = &a; // 포인터 생성 및 초기화
10
2. 포인터의 선언 및 간접 참조 연산자 간접 참조 연산자( * ) 포인터가 가리키는 값을 가져옴
포인터 생성 시 쓰는 *과는 다른 의미 포인터의 선언과 간접 참조 연산자의 차이점 포인터의 선언 : [자료형] *[이름] = [주소 값] 간접 참조 연산자 : *[포인터 이름]
11
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 = i = 11, pi = i = 11, pi =
12
3. 포인터와 배열 배열의 이름은...? 배열의 첫 번째 값의 주소를 의미한다.
배열의 이름 또한 주소 값을 의미하므로, 굳이 따지자면 포인터의 역할을 한다고 말할 수 있다.
13
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] = &a[1] = &a[2] = a =
14
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 = a+1 = *a = 10 *(a+1) = 20
15
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
16
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
17
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); 기울기는 , y절편은
18
6. 문자열의 표현 방법 문자 : 문자는 보통 한 글자를 의미 문자열 : 문자 + 배열로 여러 개의 문자가 나열된 것을 의미
ex) ‘A’, ‘S’, ‘C’ 문자열 : 문자 + 배열로 여러 개의 문자가 나열된 것을 의미 ex) “Computer”, “Programming” 문자열 뒤에는 항상 ‘\0’(NULL) 문자가 존재한다.
19
6. 문자열의 표현 방법 문자열(문자 배열)을 만들고 연속으로 출력
20
6. 문자열의 표현 방법 문자열 중 일부를 수정하여 재 출력하는 프로그램
21
6. 문자열의 표현 방법 문자열 역순 출력하는 프로그램
22
7. 문자열 함수 활용 – getchar(), putchar()
23
7. 문자열 함수 활용 – gets(), puts()
24
7. 문자열 함수 활용 – strcpy(), strcat()
25
7. 문자열 함수 활용 – strcmp() 문자열의 비교 : strcmp()
26
7. 문자열 함수 활용 – strcmp()
27
4. Q&A
Similar presentations