10장 포인터와 문자열 포인터 기본 배열과 포인터 매개변수 전달방법 포인터와 문자열.

Slides:



Advertisements
Similar presentations
제6장 조건문.
Advertisements

2007 1학기 12 배열.
슬라이드 1~21까지는 각자 복습! 슬라이드 22부터는 수업시간에 복습
Power C++ 제6장 포인터와 문자열.
배열, 포인터 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원 E304호,
쉽게 풀어쓴 C언어 Express 제5장 수식과 연산자 C Express Slide 1 (of 34)
쉽게 풀어쓴 C언어 Express 제11장 포인터 C Express.
배열(Array) 선린인터넷고등학교 정보통신과 유 순 옥.
제1장 코드와라이브러리 Page 1 ~ 30 ■■■■■ ■ ■.
제 2 장 배열과 스트링.
C 6장. 함수 #include <stdio.h> int main(void) { int num;
C 10장. 함수의 활용 #include <stdio.h> int main(void) { int num;
쉽게 풀어쓴 C언어 Express 제18장 입출력과 라이브러리 함수 C Express.
C 11장. 포인터의 활용 #include <stdio.h> int main(void) { int num;
제5장 제어명령
C언어: 배열 (Arrays).
6장. printf와 scanf 함수에 대한 고찰
7. while 문의 흐름 제어.
8장 포인터.
연산자 대입 연산자 산술 연산자 관계 연산자 논리 연산자 비트 연산자 콤마 연산자 축약 연산자 sizeof 연산자
10장 메모리 관리.
쉽게 풀어쓴 C언어 Express 제17장 동적 메모리와 연결 리스트 C Express.
쉽게 풀어쓴 C언어 Express 제17장 동적메모리와 연결리스트 C Express.
동적메모리와 연결리스트 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원 E304호,
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 02. 프로그램의 기본구성.
C 9장. 구조체 #include <stdio.h> int main(void) { int num;
C 7장. 배열과 문자열 #include <stdio.h> int main(void) { int num;
C 프로그래밍.
7장 배열 배열의 정의 배열의 초기화 1차원 배열 2차원 및 다차원 배열 문자 배열 배열과 구조.
21장. 문자와 문자열 처리 함수.
8장 함수 함수의 필요성 라이브러리 함수와 사용자 정의 함수 함수의 정의, 원형, 호출 배열을 함수 인자로 전달 재귀호출.
쉽게 풀어쓴 C언어 Express 제14장 포인터 활용 C Express.
변수와 자료형.
12장 파일처리와 매크로 파일 입출력 함수 문자 입출력 함수 라인 입출력 함수 불록 입출력 함수 매크로.
C 4장. 연산자 #include <stdio.h> int main(void) { int num;
13. 포인터와 배열! 함께 이해하기.
2장 표준 입출력 표준 입출력 함수의 종류 형식화된 입출력 문자 입출력 문자열 입출력.
Chapter 10 함수 기본.
11장. 1차원 배열 IT응용시스템공학과 김 형 진 교수.
컴퓨터 프로그래밍 기초 - 4th : 수식과 연산자 -
4. 고급변수 사용 : 포인터와 관련하여 메모리 바라보기
제어문 & 반복문 C스터디 2주차.
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
컴퓨터 프로그램 제2,3장 간단한 C 프로그램 김 문 기.
게임프로그래밍 I - 1차원 배열 - 공주대학교 게임디자인학과 박 찬 교수 2011년 4월 25일.
Chapter 05. 입출력 함수.
Fflush 사용이유 및 방법 [이유] 키보드에서 입력된 내용은 입력버퍼에 저장되었다가 Enter 키가 들어오면 프로그램으로 전달됨 이 때 입력버퍼에 있는 Enter 키도 프로그램으로 전달됨 그러므로 아래와 같은 프로그램에서 문자 하나를 입력해도 Enter키도 입력된 것으로.
#1 배열 활용 #include int main(void) { int i; int grade[5]; grade[0] = 10; grade[1] = 20; grade[2] = 30; grade[3] = 40; grade[4] = 50; for(i=0;i.
-Part2- 제1장 1차원 배열이란 무엇인가.
6장 반복제어문 for 문 while 문 do while 문 기타 제어문.
C89(C++03) 프로그래밍 (Part 2) 7 배열 8 변수 범위 9 포인터 10 유도 자료형.
-Part1- 제7장 반복문이란 무엇인가.
18장. 다차원 배열 그리고 포인터.
-Part1- 제8장 조건문이란 무엇인가 (교재 199페이지 ~ 224페이지)
컴퓨터 프로그램은 여러 기능의 복합체이다. 라이브러리 함수와 사용자 정의 함수
쉽게 풀어쓴 C언어 Express 제6장 조건문 C Express.
-Part2- 제2장 다차원 배열이란 무엇인가.
3주차: Control Flow and Others
개정판 누구나 즐기는 C언어 콘서트 제10장 문자열 출처: pixabay.
C 13장. 입출력 라이브러리 #include <stdio.h> int main(void) { int num;
17장. 포인터의 포인터.
C 4장. 연산자 #include <stdio.h> int main(void) { int num;
C.
실습과제 1번 배열 크기 : 8 문자열 길이 : 7 // MBCS 예제: 출력 결과 이해하기
Chapter 09. 배열.
배열, 포인터, 함수 Review & 과제 1, 2.
3b장 구조체와 열거형 구조체의 정의 구조체 변수의 선언 구조체 초기화 및 사용 구조체 재정의 포인터를 이용해서 구조체 사용
프로그래밍 기법 최적화 프로그래밍.
11장. 1차원 배열.
Presentation transcript:

10장 포인터와 문자열 포인터 기본 배열과 포인터 매개변수 전달방법 포인터와 문자열

포인터 선언 포인터 선언 포인터의 선언 자료형 * 변수명; 선언 예 int *ptr;

【예제 10-1】Ex1.c 02 포인터 기본 예제 01 #include <stdio.h> 02 int main(void) 03 { 04       int i = 10; 05       int *ptr = &i; 06   07       printf("ptr의 주소값 : %p\n", &ptr); 08       printf("i의 주소값   : %p\n", &i); 09       printf("i의 주소값   : %p\n\n", ptr); 10      printf("i의 값       : %d\n", i); 11       printf("i의 값       : %d\n", *ptr); 12   13       return 0; 14 } 표준입력 스트림

【예제 10-2】Ex2.c 02 포인터 기본 예제 01 #include <stdio.h> 02 int main(void) 03 { 04      int i = 10; 05       int *ptr = &i; 06      *ptr = i+20; 07       printf("i의 값은   :  %d \n", i); 08      i = i + 20; 09       printf("i의 값은   :  %d \n", *ptr); 10           11       return 0; 12 } 표준입력 스트림

지역변수의 한계 02 지역변수의 한계

포인터를 사용하여 처리한 결과 03 포인터를 사용하여 처리한 결과

【예제 10-3】Ex3.c 02 지역 변수의 한계 01 #include <stdio.h> 02 void Swap(int a, int b); 03 int main(void) 04 { 05      int x =10, y =5; 06       printf("Swap 함수 실행 전 \n"); 07       printf("x = %d,  y = %d 이다.\n", x, y); 08     09       Swap(x, y); 10       printf("Swap 함수 실행 후 \n"); 11       printf("x = %d,  y = %d 이다.\n", x, y); 12        13       return 0; 14 } 15 void Swap(int a, int b) 16 { 17     int temp; 18     temp = a; 19     a = b; 20     b = temp; 21 }

【예제 10-4】Ex4.c 02 지역 변수의 한계 01 #include <stdio.h> 02 void Swap(int* a, int* b); 03 int main(void) 04 { 05      int x =10, y =5; 06      printf("Swap 함수 실행 전 \n"); 07      printf("x = %d,  y = %d 이다.\n", x, y); 08     09      Swap(&x, &y); 10      printf("Swap 함수 실행 후 \n"); 11      printf("x = %d,  y = %d 이다.\n", x, y); 12        13      return 0; 14 } 15 void Swap(int* a, int* b) 16 { 17     int temp; 18     temp = *a; 19     *a = *b; 20     *b = temp; 21 }

배열과 포인터 04 배열과 포인터

【예제 10-5】Ex5.c 02 배열과 포인터 예제 01 #include <stdio.h> 02 int main(void) 03 { 04   int a[] = { 10, 20, 30, 40, 50 }; 05    int *p = a; 06      printf("배열명 a를 이용한 주소 표현 \n"); 07    for(i=0; i<5; i++) 08          printf("a[%d]의 주소 %p\n", i, a + i);    09   10    printf("포인터 p를 이용한 배열 주소 11    for(i=0; i<5; i++) 12          printf("a[%d]의 주소 %p\n", i, p + i); 13    printf("포인터 p를 이용한 배열 값 표현 \n"); 14    for(i=0; i<5; i++) 15          printf("a[%d] = %d\n", i, *(p + i)); 16      return 0; 17}

【예제 10-6】Ex6.c 02 배열과 포인터 예제 01 #include <stdio.h> 02     int main(void) 03    { 04         int a[] = { 11, 22, 33, 44, 55 }; 05         int *p = a; 06         printf("*p의 값 = %d\n", *p); 07         p++; 08         printf("*(p+1)의 값 = %d\n", *p); 09         p++; 10      printf("*(p+2)의 값 = %d\n", *p); 11        p--; 12      printf("*(ptr+1)의 값 = %d\n", *p); 13   14         return 0; 15     } 표준입력 스트림

【예제 10-7】Ex7.c 02 포인터를 함수의 인자로 01 #include <stdio.h> 02 int SumArray(int* pA, int Size);           03 int main(void) 04 { 05   int a[ ] = {10, 5, 15, 25, 7}; 06    int Sum; 07    Sum = SumArray(a, 5);                08    printf("배열의 합 : %d \n", Sum); 09   return 0; 10 } 11 int SumArray(int* pA, int Size)          12 { 13   int result = 0, i; 14    for(i=0; i<Size; i++) 15       result += pA[i]; 16      // result += *(pA + i); 17      // result += *pA++; 18   return result; 19 } 표준입력 스트림

【예제 10-8】Ex8.c 02 포인터를 함수의 인자로 01 #include <stdio.h> 02 void CountIncrement1(int n);            // 값에 의한 전달 03 void CountIncrement2(int* n);          // 주소에 의한 전달 04 int main(void) 05 { 06   int a = 10; 07    printf("a의 초기값 :  %d\n", a); 08    CountIncrement1(a); 09   printf("CountIncrement1 함수 실행 후 a의 값 :  %d\n", a); 10      CountIncrement2(&a); 11    printf("CountIncrement2 함수 실행 후 a의 값 :  %d\n", a); 12      return 0; 13 } 14 void CountIncrement1(int n)             15 { 16    n++; 17 } 18 void CountIncrement2(int* n)            19 { 20     (*n)++; 21 }

포인터를 이용한 문자열 표현 05 포인터를 이용한 문자열 표현 char *포인터 이름 = “ 문자열 ”; ex ) char *p = "MOON";

문자열 처리함수의 종류 06 문자열 처리함수의 종류 함수 원형 기능 size_t strlen(const char*) 문자열 길이를 알아내는 함수 int strcmp(const char* s1, const char* s2) 문자열을 비교하는 함수 char* strcpy(char* s1, const char* s2) 문자열을 복사하는 함수 char* strcat(char* s1, const char* s2) 문자열을 연결하는 함수

【예제 10-9】Ex9.c 02 문자열 처리 01 #include <stdio.h> 02 int main(void) 03 { 04   char *pC = "C programming"; 05    printf("문자열을 변환 명세를 이용해서 출력\n"); 06    printf("%s\n", pC); 07   08    printf("문자를 반복해서 출력\n"); 09    while(*pC) 10       printf("%c", *pC++); 11    printf("\n"); 12  13    return 0; 14} 표준입력 스트림

【예제 10-10】Ex10.c 02 문자열 처리 01 #include <stdio.h> 02 int main(void) 03 { 04    char  *pStr[ ] = {"english", "math", "korean"}; 05         char subject[][8] = {"english", "math", "korean"}; 06         int i; 07        printf("포인터 배열을 이용해서 문자열을 출력합니다.\n"); 08         for(i=0; i<3; i++) 09                 printf("pStr[%d] = %s\n", i, pStr[i]); 10        printf(" 이차원 배열을 이용해서 문자열을 출력합니다.\n"); 11         for(i=0; i<3; i++) 12                 printf("subject[%d] = %s\n", i, subject[i]); 13   14    return 0; 15 }

【예제 10-11】Ex11.c 02 문자열 처리 01 #include <stdio.h> 02  int main(void) 03  { 04         char *pC = "c language"; 05  06         while (*pC) { 07            printf("%c", *pC-32); 08             pC++; 09         } 10         printf("\n"); 11         return 0; 12 } 표준입력 스트림

【예제 10-12】Ex12.c 02 문자열 처리 01 #include <stdio.h> 02  #include <ctype.h> 03  int main(void) 04  { 05         char *pC = "c language"; 06  07         while (*pC) { 08            printf("%c", 09 toupper(*pC++)); 10         } 11         printf("\n"); 12         return 0; 13  } 표준입력 스트림

【예제 10-13】Ex13.c 02 문자열 처리 01 #include <stdio.h> 02  int strleng(char *ch); 03  int main(void) 04 { 05         int len; 06         char str[] = "c language and data structure"; 07         len = strleng(str); 08         printf("문자열의 크기는 %d 이다.\n", len); 09         return 0; 10 } 11 int strleng(char *ch) 12 { 13        int index; 14        for (index = 0; *(ch+index) != '\0'; index++); 15      return index; 16 } 표준입력 스트림

【예제 10-14】Ex14.c 02 문자열 처리 01 #include <stdio.h> 02  #include <string.h> 03  int main(void) 04 { 05        char cmp1[40] = "C programming"; 06         char cmp2[ ] = "Java programming"; 07         char cmp3[ ] = "C programming"; 08         char str[ ] = " is easy"; 09         int length, i; 10         length = strlen(cmp1); 11         for(i=0 ; i < length; i++) 12              printf("%c", cmp1[i]); 13  printf("\n"); 14         printf("cmp1과 cmp2는 서로 %s\n", strcmp(cmp1, cmp2) ? 15                 "같다" : "같지 않다"); 16 printf("cmp1과 cmp3는 서로 %s\n", strcmp(cmp1, cmp3) ? 17                 "같다" : "같지 않다"); 18       printf("cmp1에 cmp2를 복사하면 \"%s\"이 출력된다\n", 19                 strcpy(cmp1, cmp2)); 20        printf("cmp1에 str를 연결하면 \"%s\"이 출력된다\n", 21                 strcat(cmp1, str)); 22        return 0; 23 } 표준입력 스트림