일반적인 숫자의 덧셈은 +1 을 하면 1을 더한 값이 된다.
하지만 포인터 타입에서의 + 1은 1을 더한 값이 아니다.
예제를 보자.
#include <iostream>
=============================================
주소값이 출력된 차를 보면 8 이지만[short타입은 2바이트씩 차지한다.] 실제로 그 사이의 원소 차는 4이기 때문에 4가 출력되는 것이다.
하지만 포인터 타입에서의 + 1은 1을 더한 값이 아니다.
예제를 보자.
#include <iostream>
using namespace std;
int main()
{
int array[10];// 배열 선언
int* p = &array[5]; // array[5] 의 주소값을 int형 포인터에 입력
cout << "p = " << p << "\n"; // p값(array[5]의 주소값]을 출력
cout << "&array[5] = " << &array[5] << "\n"; // array[5]의 주소값을 출력
p++; // p = p + 1 과 같음.
cout << "p++\n";
cout << "연산 이후 변경된 값의 출력 \n";
cout << "p = " << p << "\n"; // +1한 p값(??? 주소값]을 출력
cout << "&array[6] = " << &array[6] << "\n"; // array[6]의 주소값을 출력
system("pause");
return 0;
}
===================================
===================================
출력화면
===================================
//////////////////////
이렇게 포인터인 p값에 +1 을 할 경우 실제로는 +4가 연산되어 다음 주소를 가리키게 된다.
이는 int타입이 4바이트씩 구성되기 때문이며 타입을 바꾸면 그 타입의 크기만큼씩 변경됨을 알 수 있다.
/////////////////
포인터 변수간의 뺄셈도 가능하다. 이 경우에는 두 포인터 변수간의 주소 차이 가 아닌 몇개의 원소가 있는지를 반환한다.
//////////////
#include <iostream>
===================================
//////////////////////
이렇게 포인터인 p값에 +1 을 할 경우 실제로는 +4가 연산되어 다음 주소를 가리키게 된다.
이는 int타입이 4바이트씩 구성되기 때문이며 타입을 바꾸면 그 타입의 크기만큼씩 변경됨을 알 수 있다.
/////////////////
포인터 변수간의 뺄셈도 가능하다. 이 경우에는 두 포인터 변수간의 주소 차이 가 아닌 몇개의 원소가 있는지를 반환한다.
//////////////
#include <iostream>
using namespace std;
int main()
{
short sArrays[10];
short* ps1 = &sArrays[3];
short* ps2 = &sArrays[7];
cout << "ps1 = " << ps1 << "\n"; //
cout << "ps2 = " << ps2 << "\n"; //
cout << "ps2 - ps1 = " << ps2 - ps1 << "\n"; // 차를 출력.
system("pause");
return 0;
}
==========================================
출력화면
출력화면
=============================================
주소값이 출력된 차를 보면 8 이지만[short타입은 2바이트씩 차지한다.] 실제로 그 사이의 원소 차는 4이기 때문에 4가 출력되는 것이다.
'공부 > C++' 카테고리의 다른 글
error LNK2019 에러의 경우 (0) | 2012.02.14 |
---|---|
오늘의 공부 단일체(Singleton) 싱글턴[싱글톤] (0) | 2012.02.13 |
콤보박스 사용 함수. GetLBText (0) | 2011.12.29 |
C++ 객체지향 프로그래밍 Chapter 22 상속과 포함 - 2 (0) | 2011.12.20 |
C++ 객체지향 프로그래밍 Chapter 23 다형성과 가상함수 (0) | 2011.12.19 |