Presentation is loading. Please wait.

Presentation is loading. Please wait.

포인터 변수의 선언 int *ptr; int *ptr1, *ptr2; char *ptr3;

Similar presentations


Presentation on theme: "포인터 변수의 선언 int *ptr; int *ptr1, *ptr2; char *ptr3;"— Presentation transcript:

1 포인터 변수의 선언 int *ptr; int *ptr1, *ptr2; char *ptr3;

2 포인터 변수의 크기 (test1.c) #include int main(void) { printf("char 의 크기 : %d\n", sizeof(char)); printf("short 의 크기 : %d\n", sizeof(short)); printf("long 의 크기 : %d\n", sizeof(long)); printf("int 의 크기 : %d\n", sizeof(int)); printf("float 의 크기 : %d\n", sizeof(float)); printf("double 의 크기 : %d\n", sizeof(double)); printf("\n"); printf("char 형 포인터의 크기 : %d\n", sizeof(char*)); printf("short 형 포인터의 크기 : %d\n", sizeof(short*)); printf("long 형 포인터의 크기 : %d\n", sizeof(long*)); printf("int 형 포인터의 크기 : %d\n", sizeof(int*)); printf("float 형 포인터의 크기 : %d\n", sizeof(float*)); printf("double 형 포인터의 크기 : %d\n", sizeof(double*)); return 0; }

3 포인터 변수의 사용 int*ptr = 메모리 주소 ; ptr[0] = 0; ptr[1] = 10;... ptr[9] = 90; ptr, &ptr[0] *(ptr+i), ptr[i] (ptr+i), &ptr[i] ptr ptr[0] ptr[1] ptr[2] ptr[3] ptr[4] ptr[5] ptr[6] ptr[7] ptr[8] ptr[9]

4 포인터 변수의 초기화 int *ptr = NULL;

5 메모리 할당과 해제 int *ptr = (int *)malloc(sizeof(int) * 10); ptr = (int *)calloc(10, sizeof(int)); ptr = (int *)realloc(ptr, 20*sizeof(int)); free(ptr); #include

6 포인터와 배열의 비교 (test2.c) #include #define MAX_INPUT 256 int main(void) { char input[MAX_INPUT]={0};// 입력을 받기 위한 배열 char *output=NULL;// 출력을 저장하기 위한 포인터 int length, ch; fgets(input, MAX_INPUT-1, stdin);// 사용자로부터 문자열을 입력 받음 length = strlen(input)+1;// NULL 을 포함한 문자열의 길이만큼 output = (char *)malloc(length);// 메모리를 할당 받음 for(ch=0 ; ch= 'a' && input[ch] <= 'z') output[ch] = input[ch] + 'A'-'a';// 소문자면 대문자로 변환 else output[ch] = input[ch]; } printf("Input : %s", input);// 입력 값 표시 printf("Output: %s", output);// 출력 값 표시 free(output);// 메모리 반납 return 0; }

7 포인터의 활용 (test3.c) #include int main(void) { int students, s, sum=0; int *score=NULL; printf(“Num. of students : "); scanf("%d", &students); score=(int *)malloc(sizeof(int)*students); printf(“Input student grade\n"); for(s=0 ; s

8 & 연산자 int var; int *ptr; ptr = &var;

9 & 연산자 (test4.c) #include int main(void) { int var = 100; int *ptr = NULL; ptr = &var; printf("var: %p\n", ptr); return 0; }

10 * 연산자 int result, var1=3, var2=5; result = var1 * var2; int *ptr; short var1=1, var2=2; short *ptr = NULL; ptr = &var1; var2 = *ptr; var1= ptr=1000 var2=1

11 포인터의 이동 int val = 5; int *ptr = NULL; ptr = &val; ptr = ptr+1; ptr += 1; ptr++;

12 포인터의 이동 (test5.c) #include int main(void) { char *ptrChar = NULL; short *ptrShort = NULL; int *ptrInt = NULL; printf("char pointer inc. : %d\n", ++ptrChar); printf("short pointer inc. : %d\n", ++ptrShort); printf("int pointer inc. : %d\n", ++ptrInt); return 0; }

13 [] 연산자 p[0] p[1] p[2] p[3] p[4] p=1000 *ptr *(ptr+1) *(ptr+2) *(ptr+3) *(ptr+4) ptr=1000

14 배열과 포인터 (test6.c) #include int main(void) { short array[3]; short *ptr = array; ptr[0] = 0; ptr[1] = 10; ptr[2] = 20; printf("array reference:\t"); printf("%d, %d, %d\n", array[0], array[1], array[2]); printf("ptr reference:\t"); printf("%d, %d, %d\n\n", ptr[0], ptr[1], ptr[2]); printf("array address:\t %p\n", array); printf("ptr address:\t %p\n", ptr); return 0; }

15 포인터 연산 정리 변수에 & 연산자  포인터 포인터에 * 연산자  포인터가 가리키는 데이터 포인터에 [] 연산자  포인터가 가리키는 위치부터 연속된 데이 터 포인터의 덧셈, 뺄셈  포인터를 다음 데이터 위치로 이동

16 포인터에 익숙해지기 short array[3]; short *ptr = array; ptr[0] = 0; ptr[1] = 10; ptr[2] = 20; short array[3]; short *ptr = array; *ptr = 0; *(ptr+1) = 10; *(ptr+2) = 20; short array[3]; short *ptr = array; *ptr++ = 0; *ptr++ = 10; *ptr = 20; short array[3]; short *ptr = array; *ptr = 0; *(++ptr) = 10; *(++ptr) = 20; short array[3]; short *ptr = &array[0]; ptr[0] = 0; ptr[1] = 10; ptr[2] = 20;

17 실습과제 영어 단어를 입력 받아 A 에 1 점, B 에 2 점, C 에 3 점 이런 식으로 점수를 계산하는 프로그램을 작성하세요.


Download ppt "포인터 변수의 선언 int *ptr; int *ptr1, *ptr2; char *ptr3;"

Similar presentations


Ads by Google