1 / 14

포인터와 배열

포인터와 배열. C 기초과정에서 배운 내용 복습. 포인터변수를 선언할 때는 타입과 이름을 지정해 준다 . int *ptr ptr 은 포인터 변수이다 . ptr 은 정수를 가리킨다. &k - 변수 k 의 주소 int k = 3; ptr = &k *ptr - ptr 이 가리키는 곳에 들어 있는 내용 (dereferenceing) int j = *ptr *ptr = 4;. 배열의 이름은 배열 첫 원소의 주소이다 . int my_array[] = {1,23,17,4,-5,100};

kiet
Download Presentation

포인터와 배열

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 포인터와 배열 C 기초과정에서 배운 내용 복습 강원대학교 컴퓨터학부

  2. 포인터변수를 선언할 때는 타입과 이름을 지정해 준다. int *ptr ptr은 포인터 변수이다. ptr은 정수를 가리킨다. 강원대학교 컴퓨터학부

  3. &k - 변수 k의 주소 int k = 3; ptr = &k *ptr - ptr이 가리키는 곳에 들어 있는 내용 (dereferenceing) int j = *ptr *ptr = 4; 강원대학교 컴퓨터학부

  4. 배열의 이름은 배열 첫 원소의 주소이다. int my_array[] = {1,23,17,4,-5,100}; 아래 두 문장은 동일한 문장 ptr = &my_array[0]; ptr = my_array; 강원대학교 컴퓨터학부

  5. #include <stdio.h> int my_array[] = {1,23,17,4,-5,100}; int *ptr; int main(void) { int i; ptr = &my_array[0]; /* point our pointer to the first element of the array */ printf("\n\n"); for (i = 0; i < 6; i++) { printf("my_array[%d] = %d ",i,my_array[i]); /*<-- A */ printf("ptr + %d = %d\n",i, *(ptr + i)); /*<-- B */ } return 0; } 강원대학교 컴퓨터학부

  6. #include <stdio.h> int my_array[] = {1,23,17,4,-5,100}; int *ptr; int main(void) { int i; ptr = &my_array[0]; /* point our pointer to the first element of the array */ printf("\n\n"); for (i = 0; i < 6; i++) { printf("my_array[%d] = %d ",i,my_array[i]); /*<-- A */ printf("ptr + %d = %d\n",i, *(ptr + i)); /*<-- B */ } return 0; } B 문장 대신 아래 문장을 넣으면? printf("ptr + %d = %d\n",i, *ptr++); printf("ptr + %d = %d\n",i, *(++ptr)); 강원대학교 컴퓨터학부

  7. C에서 스트링은 null 문자로 끝나는 문자 배열이다. char my_string[40]; my_string[0] = 'T'; my_string[1] = 'e'; my_string[2] = 'd': my_string[3] = '\0'; char my_string[40] = {'T', 'e', 'd', '\0',}; char my_string[40] = "Ted"; 강원대학교 컴퓨터학부

  8. #include <stdio.h> char strA[80] = "A string to be used for demonstration purposes"; char strB[80]; int main(void) { char *pA; /* a pointer to type character */ char *pB; /* another pointer to type character */ puts(strA); /* show string A */ pA = strA; /* point pA at string A */ puts(pA); /* show what pA is pointing to */ pB = strB; /* point pB at string B */ putchar('\n'); /* move down one line on the screen */ while(*pA != '\0') { *pB++ = *pA++; } *pB = '\0'; puts(strB); /* show strB on screen */ return 0; } int puts(const char *s); 강원대학교 컴퓨터학부

  9. char *my_strcpy(char *destination, char *source) { char *p = destination; while (*source != '\0') { *p++ = *source++; } *p = '\0'; return destination; } int main(void) { my_strcpy(strB, strA); puts(strB); } char *my_strcpy(char *destination, const char *source); *ptr++ (*ptr)++ 강원대학교 컴퓨터학부

  10. 연습문제: 아래 함수를 구현하시오. void int_copy(int *ptrA, int *ptrB, int nbr); 강원대학교 컴퓨터학부

  11. char *my_strcpy(char dest[], char source[]) { int i = 0; while (source[i] != '\0') { dest[i] = source[i]; i++; } dest[i] = '\0'; return dest; } 강원대학교 컴퓨터학부

  12. 아래 두 문장은 동일! while (*source != '\0') while (*source) // 요것이 더 빠르다. 강원대학교 컴퓨터학부

  13. 연습문제: 아래 함수를 구현하시오. strlen(); strcat(); strchr(); 강원대학교 컴퓨터학부

  14. Pointers to Arrays int array[3] = {1, 5, 7}; 아래 두 문장은 동일하다. void a_func(int *p); void a_func(int p[]); int (*p1d)[10]; // p1d는 배열을 가리키는 포인터 int *p1d[10]; // p1d는 포인터의 배열 강원대학교 컴퓨터학부

More Related