1 장 C 언어복습 표준입출력배열포인터배열과포인터함수 const와포인터구조체컴파일러사용방법 C++ 프로그래밍입문

Similar documents
설계란 무엇인가?

설계란 무엇인가?

Microsoft PowerPoint - ch07 - 포인터 pm0415

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

11장 포인터

슬라이드 1

Microsoft PowerPoint - 제11장 포인터

Microsoft PowerPoint - 제11장 포인터(강의)

untitled

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2

Microsoft PowerPoint - chap-11.pptx

PowerPoint 프레젠테이션

금오공대 컴퓨터공학전공 강의자료

11장 포인터

제 11 장포인터 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning

Microsoft PowerPoint - chap10-함수의활용.pptx

Microsoft PowerPoint - chap11-포인터의활용.pptx

제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

Microsoft PowerPoint - chap06-2pointer.ppt

Microsoft PowerPoint - Chapter_08.pptx

KNK_C_05_Pointers_Arrays_structures_summary_v02

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다. 2

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

Data Structure

구조체정의 자료형 (data types) 기본자료형 (primitive data types) : char, int, float 등과같이 C 언어에서제공하는자료형. 사용자정의자료형 (user-defined data types) : 다양한자료형을묶어서목적에따라새로운자료형을

OCW_C언어 기초

Microsoft PowerPoint - 03_(C_Programming)_(Korean)_Pointers

PowerPoint 프레젠테이션

PowerPoint Template

<4D F736F F F696E74202D20C1A63132B0AD20B5BFC0FB20B8DEB8F0B8AEC7D2B4E7>

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

윤성우의 열혈 TCP/IP 소켓 프로그래밍

1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y; public : CPoint(int a

1. 표준입출력 C++ : C의모든라이브러리를포함 printf, scanf 함수사용가능예 : int, double, 문자열값을입력받고출력하기 #include <cstdio> int ivar; double dvar; char str[20]; printf("int, dou

Microsoft PowerPoint - chap06-1Array.ppt

untitled

02장.배열과 클래스

untitled

Microsoft PowerPoint - ch07 - 포인터 pm0415

금오공대 컴퓨터공학전공 강의자료

ch15

Microsoft PowerPoint - C_9장 포인터 pptx

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures

<4D F736F F F696E74202D20C1A63137C0E520B5BFC0FBB8DEB8F0B8AEBFCD20BFACB0E1B8AEBDBAC6AE>

8장. 포인터

3. 1 포인터란 3. 2 포인터변수의선언과사용 3. 3 다차원포인터변수의선언과사용 3. 4 주소의가감산 3. 5 함수포인터

C 언어 프로그래밊 과제 풀이

PowerPoint Presentation

Microsoft PowerPoint - [2009] 02.pptx

1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout << " 양수입력 : "; cin >> *p; if (*p <= 0) cout << " 양수를입력해야합니다 " << endl; return; 동적할

슬라이드 1

ABC 6장

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조

Microsoft PowerPoint - chap04-연산자.pptx

Microsoft PowerPoint - chap03-변수와데이터형.pptx

Microsoft PowerPoint - chap13-입출력라이브러리.pptx

Lab 3. 실습문제 (Single linked list)_해답.hwp

<4D F736F F F696E74202D20C1A63134C0E520C6F7C0CEC5CD5FC8B0BFEB>

목차 배열의개요 배열사용하기 다차원배열 배열을이용한문자열다루기 실무응용예제 C 2

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

Microsoft PowerPoint - Chapter8.pptx

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

PowerPoint 프레젠테이션

Microsoft PowerPoint - C++ 5 .pptx

; struct point p[10] = {{1, 2, {5, -3, {-3, 5, {-6, -2, {2, 2, {-3, -3, {-9, 2, {7, 8, {-6, 4, {8, -5; for (i = 0; i < 10; i++){ if (p[i].x > 0 && p[i

PowerPoint Template

기초컴퓨터프로그래밍

Microsoft PowerPoint - Chapter_09.pptx

PowerPoint 프레젠테이션

Infinity(∞) Strategy

쉽게 풀어쓴 C 프로그래밍

1. 클래스와배열 int 형배열선언및초기화 int ary[5] = 1, 2, 3, 4, 5 ; for (int i = 0; i < 5; i++) cout << "ary[" << i << "] = " << ary[i] << endl; 5 장클래스의활용 1

PowerPoint 프레젠테이션


PowerPoint 프레젠테이션

중간고사

Microsoft PowerPoint - chap12-고급기능.pptx


Microsoft PowerPoint - ch08 - 구조체 (structure) am0845

Microsoft PowerPoint - 05-chap03-ArrayAndPointer.ppt

Lab 4. 실습문제 (Circular singly linked list)_해답.hwp

Microsoft PowerPoint - Chapter14_17.pptx

Microsoft PowerPoint - Lesson14.pptx

Microsoft PowerPoint - Lesson14.pptx

설계란 무엇인가?

int main(void) int a; int b; a=3; b=a+5; printf("a : %d \n", a); printf("b : %d \n", b); a b 3 a a+5 b &a(12ff60) &b(12ff54) 3 a 8 b printf(" a : %x \

Microsoft PowerPoint - chap05-제어문.pptx

C 프로그래밊 개요

14 주차구조체와공용체

Microsoft PowerPoint - ch10 - 이진트리, AVL 트리, 트리 응용 pm0600

OCW_C언어 기초

4. 1 포인터와 1 차원배열 4. 2 포인터와 2 차원배열 4. 3 포인터배열 4. 4 포인터와문자그리고포인터와문자열

Chapter 4. LISTS

Microsoft PowerPoint - additional06.ppt [호환 모드]

Data Structure

Microsoft PowerPoint 자바-기본문법(Ch2).pptx

Microsoft PowerPoint - 7장 배열 pptx

Microsoft PowerPoint - Chapter 6.ppt

Transcription:

1 장 C 언어복습 표준입출력배열포인터배열과포인터함수 const와포인터구조체컴파일러사용방법 C++ 프로그래밍입문

1. 표준입출력 표준입출력 입력 : 키보드, scanf 함수 출력 : 모니터, printf 함수문제 : 정수값 2개를입력받고두값사이의값들을더하여출력하라. #include <stdio.h> int main(void) int Num1, Num2; int Sum = 0; int i; // 전처리문사용 // main 함수 // 변수선언 // 변수선언및초기화 주소전달 서식문자 : int 형 - %d printf("2개의정수입력 : "); scanf("%d %d", &Num1, &Num2); for (i = Num1; i <= Num2; i++) Sum += i; // 출력 // 입력 // 제어문 // 연산자 값전달 printf("%d 부터 %d 까지의합 : %d\n", Num1, Num2, Sum); return 0; 1 장 C 언어복습 1

2. 배열 배열 : 같은타입의변수여러개를묶어서처리 배열변수선언및초기화의예 int Grade[5]; Grade[2] = 100; // 지역변수의경우쓰레기값을가짐 // 세번째원소의값을 100 으로변경 int Grade[5] = 10, 20, 30, 40, 50 ; int Grade[5] = 10, 20 ; int Grade[5] = 0 ; // Grade[2] 이후로는 0 값을가짐 // 모두 0 값을가짐 int Grade[2][3] = 10, 20, 30, 40, 50, 60 ; // 2 차원배열 Grade[1][1] = 100; // 2 행 2 열원소의값을 100 으로변경 1 장 C 언어복습 2

2. 배열 문제 : 5 행 5 열의 int 형배열을선언하고실행결과와같이각원소의값을채운후출력하기 int main(void) int Ary[5][5]; int i, j; // 2 차원배열 for (i = 0; i < 5; i++) for (j = 0; j < 5; j++) if (i >= j) // 왼쪽아래부분 : i + 1 Ary[i][j] = i + 1; else // 오른쪽위부분 : 0 Ary[i][j] = 0; for (i = 0; i < 5; i++) for (j = 0; j < 5; j++) printf("%d ", Ary[i][j]); printf("\n"); return 0; 1 장 C 언어복습 3

3. 포인터 : 프로그램과메모리 실행중인프로그램 ( 프로세스 ) 의메모리구조 1 장 C 언어복습 4

3. 포인터 : 메모리주소 메모리주소 주소 : 바이트단위의번호 주소를 8비트로표현한다면 à 2 8 개 (0~255번지) 의주소값 Windows 운영체제에서는 32비트로표현 à 2 32 개 (0~2 32-1번지) 프로세스 1개당 4GByte의전용메모리 ( 가상메모리 ) 가할당됨 변수와함수의주소 변수와함수는메모리공간을차지함 1 장 C 언어복습 5

3. 포인터 : 변수와포인터 변수의주소 : 주소연산자 (&) 사용 int num = 5; printf(" 변수 num의주소 : %d\n", &num); 포인터 : 주소값을저장하는변수 타입별로다르게표현됨 à 포인터변수를통해간접처리가능 예 : int형포인터변수 1 장 C 언어복습 6

3. 포인터 : 변수와포인터 포인터변수를통한변수접근 : 역참조연산자 (*) 사용 int *pnum = &num; *pnum = 5; (num = 5; 와동일 ) 포인터연산 : 증가 (++), 감소 (--), 덧셈 (+), 뺄셈 (-) 가능 int 형포인터의경우 1 증가 : int 형변수의크기인 4 만큼증가함 예제 int main(void) int var = 5; int *p = &var; // 포인터변수선언및 var 주소로초기화 printf("var의주소 : %d\n", &var); printf("var의값 : %d\n", var); printf("p의주소 : %d\n", &p); printf("p의값 : %d\n", p); printf("p가가리키는변수의값 : %d\n", *p); int 형이므로 4 증가 p++; printf(">> 변경후 \n"); printf("p의값 : %d\n", p); return 0; 1 장 C 언어복습 7

4. 배열과포인터 배열은포인터처럼, 포인터는배열처럼사용가능! 배열에대한포인터연산의적용예 배열첫번째원소의주소대입 다음원소를가리킴 pnum[0], pnum[1], 과같이사용가능 pnum[2] == *(pnum + 2) 주의 : 배열명에대한주소변경불가 à 상수개념 1 장 C 언어복습 8

4. 배열과포인터 : 메모리동적할당 메모리동적할당및해제함수 malloc(), free() 예제 : 10 개의원소를갖는 int 형배열에대한메모리동적할당 #include <stdio.h> #include <stdlib.h> #include <time.h> int main(void) int i, ary[10], *p; srand((unsigned) time(null)); for (i = 0; i < 10; i++) ary[i] = rand(); // srand, rand 함수 // time 함수 // 무작위값대입 p = (int *) malloc(sizeof(int) * 10); // int 형 10 개메모리동적할당 for (i = 0; i < 10; i++) p[i] = ary[i]; // 포인터는배열처럼사용가능 printf("index\tary\tp\n"); for (i = 0; i < 10; i++) printf("%d\t%d\t%d\n", i, ary[i], p[i]); free(p); return 0; // 메모리해제 malloc 의반환형 : void * à 형변환필요 à C 에서는자동형변환됨 1 장 C 언어복습 9

5. 함수 함수작성시고려사항 함수원형, 함수정의, 함수호출, 매개변수전달 예제 : x y 을계산하는함수 #include <stdio.h> int power(int x, int y) int i; int result = 1; for (i = 0; i < y; i++) result *= x; return result; 값에의한전달 int main(void) int a = 2; int b = 3; int result = power(a, b);// 함수호출 printf("%d^%d : %d\n", a, b, result); a = 3; b = 4; result = power(a, b); printf("%d^%d : %d\n", a, b, result); return 0; 1 장 C 언어복습 10

5. 함수 : 매개변수전달방식 값에의한전달 예제 : swap 함수 문제점은? void swap(int x, int y) int temp = x; x = y; y = temp; int main(void) int a = 2; int b = 3; 값에의한전달 printf("a : %d, b : %d\n", a, b); swap(a, b); printf("a : %d, b : %d\n", a, b); return 0; 1 장 C 언어복습 11

5. 함수 : 매개변수전달방식 참조에의한전달 예제 : swap 수정 void swap(int *x, int *y) int temp = *x; *x = *y; *y = temp; int main(void) int a = 2; int b = 3; 참조에의한전달 printf("a : %d, b : %d\n", a, b); swap(&a, &b); 주소전달 printf("a : %d, b : %d\n", a, b); return 0; 1 장 C 언어복습 12

5. 함수 : 매개변수전달방식 배열의전달 배열의전달 값에의한전달불가 첫번째원소의주소를전달 à 참조에의한전달사용 예제 int 형배열포인터, 원소개수 void SetArray(int *ary, int count) int i; int main(void) int i; int Ary[5]; SetArray(Ary, 5); 배열의첫번째원소주소, 원소의개수전달 for (i = 0; i < count; i++) ary[i] = i * i; 포인터를배열처럼사용 for (i = 0; i < 5; i++) printf("%d : %d\n", i, Ary[i]); return 0; 1 장 C 언어복습 13

6. const 와포인터 const 상수선언 const double PI = 3.14; 변수 PI의값변경불가 함수매개변수의상수화 int sum(const int x, const int y) return (x + y); 함수내에서 x, y의값변경불가 실매개변수로일반변수와 const 상수모두사용가능 형식매개변수가 const가아닌경우에는실매개변수로 const 상수불가 const 와포인터 int *pnum = &num; 1 장 C 언어복습 14

6. const 와포인터 1. num 의상수화 const int *pnum = &num; 2. pnum 의상수화 int * const pnum = &num; 예제 : const 의사용 int main(void) int var1 = 1; int var2 = 2; const int *p1; 선언과동시에초기화 //int * const p2; int * const p2 = &var1; p1 = &var1; p1 = &var2; //*p1 = 5; var2 = 4; *p2 = 3; //p2 = &var2; 포인터를통해값변경불가 변수자체는변경가능 다른변수로변경불가 printf("var1 : %d\n", var1); printf("var2 : %d\n", var2); return 0; 1 장 C 언어복습 15

7. 구조체 구조체 동질또는이질적인데이터여러개를하나의그룹으로처리 사용자정의형 예 : 2 차원평면상의한점 구조체변수대입 O 배열은대입 X 구조체배열가능 구조체의멤버변수로배열가능 이경우에도대입가능 P1 = P2; struct Point int x; int y; // 구조체선언 1 장 C 언어복습 16 ; struct Point P1, P2; // 변수선언 P1.x = 5; P1.y = 6; // 변수사용 struct Point Sum(struct Point P1, struct Point P2); struct Point Ary[10]; struct Student char name[20]; int id; int score; ; 값에의한전달가능

7. 구조체 예제 : 2 차원평면상의한점을위한 Point 구조체사용 struct Point int x, y; ; struct Point Sum(struct Point P1, struct Point *P2) struct Point Po; Po.x = P1.x + P2->x; Po.y = P1.y + P2->y; return Po; 구조체변수의선언및초기화 int main(void) struct Point A = 1, 2 ; struct Point B = 3, 4 ; struct Point C; P1 : 값에의한전달, P2 : 참조에의한전달 구조체포인터의멤버는 -> 로접근 (*P2).x 와동일 C = Sum(A, &B); A : 값전달, B : 주소전달 printf("point C : (%d, %d)\n", C.x, C.y); return 0; 1 장 C 언어복습 17

7. 구조체 : 단방향링크드리스트 예제 : 단방향링크드리스트만들기 #include <stdio.h> #include <stdlib.h> struct Node int data; struct Node *next; ; int main(void) int i; struct Node *pstart = NULL; struct Node *pend = NULL; struct Node *Current; // 첫번째노드포인터 // 마지막노드포인터 1 장 C 언어복습 18

7. 구조체 : 단방향링크드리스트 for (i = 1; i <= 5; i++) // 노드생성 Current = (struct Node *) malloc(sizeof(struct Node)); Current->data = i; Current->next = NULL; if (pstart == NULL) pstart = pend = Current; else pend->next = Current; pend = Current; // 첫번째노드 // 노드추가 // 첫번째노드부터출력 Current = pstart; while (Current!= NULL) printf("%d\n", Current->data); Current = Current->next; return 0; 1 장 C 언어복습 19

8. 컴파일러사용방법 프로그램작성및수행과정 컴파일러의종류 Visual C++ : Windows 운영체제, 통합개발환경제공 Visual C++ 6.0 : Visual Studio 98, 아직까지도많이사용되고있음 VC++ 8.0 : VS 2005, VC++ 9.0 : VS 2008 VC++ 10.0 : 최신버전, VS 2010에포함 gcc : UNIX 운영체제 그외다수 컴파일러의선택 어떤컴파일러라도상관없음 자신의컴퓨터사용환경에따라적절히선택하여사용하면됨 본강의에서배우는것은컴파일러의사용방법이아닌표준 C++! 1 장 C 언어복습 20

8. 컴파일러사용방법 본강의에서사용하는컴파일러 Visual C++ 6.0 또는 Visual C++ 8.0 이후 à 표준 C++ 차원 ( 콘솔프로그래밍 ) 에서는거의유사함 VC++ 6.0 VC++ 8.0 사용방법 : 교재참고 부록 1 : Visual C++ 6.0 부록 2 : Visual C++ 8.0 1 장 C 언어복습 21