Download presentation
Published byMaximillian Small Modified over 9 years ago
1
포인터 변수의 선언 int *ptr; int *ptr1, *ptr2; char *ptr3;
2
포인터 변수의 크기(test1.c) #include <stdio.h> 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+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 <malloc.h>
6
포인터와 배열의 비교(test2.c) #include <stdio.h>
#include <string.h> #include <malloc.h> #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<length ; ch++) if(input[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 <stdio.h> #include <malloc.h>
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<students ; s++) printf("%dNo.: ", s+1); scanf("%d", &score[s]); } printf(" \n"); sum += score[s]; printf("%dNo.: %3d\n", s+1, score[s]); printf(“Total: %3d\n", sum); printf(“Grade: %3.2f\n", (double)sum/students); free(score); return 0;
8
& 연산자 int var; int *ptr; ptr = &var;
9
& 연산자 (test4.c) #include <stdio.h> 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; 1000 1001 var1=1 1002 1003 var2=1 1004 1005 1006 ptr=1000 1007 1008 1009 1010
11
포인터의 이동 int val = 5; int *ptr = NULL; ptr = &val; ptr = ptr+1;
12
포인터의 이동(test5.c) #include <stdio.h> 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
[] 연산자 1000 1000 p[0] 1001 *ptr 1001 1002 1002 1003 p[1] *(ptr+1) 1003
1004 1004 1005 p[2] 1005 *(ptr+2) 1006 1006 1007 p[3] 1007 *(ptr+3) 1008 1008 1009 p[4] 1009 *(ptr+4) 1010 1010 1011 1011 1012 1012 1013 1013 1014 p=1000 1014 ptr=1000 1015 1015
14
배열과 포인터(test6.c) #include <stdio.h> 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점 이런 식으로 점수를 계산하는 프로그램을 작성하세요.
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.