C언어 - 포인터의 산술 연산

2020. 11. 11. 21:57개인공부/C언어

int* ptr = 0;

printf("%p %lld\n", ptr, (long long) ptr);

ptr += 1;

printf("%p %lld\n", ptr, (long long) ptr);

결과값 : 

00000000 0

 

// ptr +1 이후

 

00000004 4

 

char* ptr = 0;

printf("%p %lld\n", ptr, (long long) ptr);

ptr += 1;

printf("%p %lld\n", ptr, (long long) ptr);

//int* ptr 대신 char* ptr 로 바꾸면

결과값 : 

00000000 0

 

// ptr +1 이후

 

00000001 1

 

 

double* ptr = 0;

00000000 0

 

// ptr +1 이후

 

00000008 8

 

 

long long* ptr = 0;

00000000 0

 

// ptr +1 이후

 

00000008 8

 

 

// ptr +2 는

000000010 16

 

16진수라 16이되면 10이 된다.

 

 

// ptr -1 은

00000000 0

FFFFFFFF0 -16

 

int arr[10];
int* ptr1 = &arr[3], *ptr2 = &arr[5];

//ptr2 = ptr1 + ptr2; // 포인터 주소끼리 더하기 불가
//철수네집 주소랑 영희네집 주소 더한다고 무슨의미가 생기는가?

//int i = ptr2 -ptr1; // 포인트 주소끼리 빼기는 가능 // 얼마나 떨어져있나 알수있는 것
//철수네 305호 - 영희네 301호 는 4집 차이. 

 

 

 

 

 

 

 

 

 

 

 

출처 : 홍정모의 따라배우는 C언어