Presentation is loading. Please wait.

Presentation is loading. Please wait.

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

Similar presentations


Presentation on theme: "10장 포인터와 문자열 포인터 기본 배열과 포인터 매개변수 전달방법 포인터와 문자열."— Presentation transcript:

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

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

3 【예제 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);      printf("i의 값       : %d\n", i); 11       printf("i의 값       : %d\n", *ptr); 12   13       return 0; 14 } 표준입력 스트림

4 【예제 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 } 표준입력 스트림

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

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

7 【예제 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 }

8 【예제 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 }

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

10 【예제 10-5】Ex5.c 02 배열과 포인터 예제 01 #include <stdio.h>
02 int main(void) 03 {   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}

11 【예제 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--;      printf("*(ptr+1)의 값 = %d\n", *p); 13   14         return 0; 15     } 표준입력 스트림

12 【예제 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 } 표준입력 스트림

13 【예제 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 }

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

15 문자열 처리함수의 종류 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) 문자열을 연결하는 함수

16 【예제 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} 표준입력 스트림

17 【예제 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 }

18 【예제 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 } 표준입력 스트림

19 【예제 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", toupper(*pC++)); 10         } 11         printf("\n"); 12         return 0; 13  } 표준입력 스트림

20 【예제 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 } 표준입력 스트림

21 【예제 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]);  printf("\n"); 14         printf("cmp1과 cmp2는 서로 %s\n", strcmp(cmp1, cmp2) ? 15                 "같다" : "같지 않다"); 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 } 표준입력 스트림


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

Similar presentations


Ads by Google