앞서 사용한 int* 이라는 타입 이름은
int* 즉 int타입의 변수만 가리킬 수 있는 포인터 의 선언이다.
고로 int*로 설정했다면 int타입 이외의 변수를 포인터로 사용할 수 없다.
그렇다면 여기서 예시. 코드.
또한 unsigned int와 int 같은 사인이 다른 타입간도 선언이 불가능하다.
//////////////////////////////////////////
////////////////////////
출력화면
문자 타입의 주소는 저렇게 에러가 난다.
///////////////////
그렇다면 왜 ? 포인터는 정해진 타입의 포인터로 만 정해야 하는걸까?
하는 질문이 있을 수 있다.
타입을 정하지 않고 포인터를 쓰게되면
포인터는 해당 값의 주소 를 가리키기 때문에
해당 값의 주소 이후의 공간이 어디까지 쓰이는지[해당 변수가 무슨 타입인지에 따라 바뀜] 알 방법이 없다.
그래서 타입을 정해줘야 이러한 오류가 생기지 않기에 타입을 꼭 맞추어줘야 한다는 것이다.
[void는?]
int* 즉 int타입의 변수만 가리킬 수 있는 포인터 의 선언이다.
고로 int*로 설정했다면 int타입 이외의 변수를 포인터로 사용할 수 없다.
그렇다면 여기서 예시. 코드.
또한 unsigned int와 int 같은 사인이 다른 타입간도 선언이 불가능하다.
//////////////////////////////////////////
#include <iostream>
using namespace std;
int main()
{
int i = 300;
int* pi = &i;
char c = 'C';
char* pc = &c;
float f = 700.5f;
float* pf = &f;
bool b = true;
bool* pb = &b;
short int s = 456;
short int* ps = &s;
cout << "a = " << i << "\n"; // i출력
cout << "pi = " << pi << "\n"; // i의 주소값 출력
cout << "c = " << c << "\n"; // c값 출력
cout << "pc = " << pc << "\n"; // c의 주소값 출력
cout << "f = " << f << "\n"; // f값
cout << "pf = " << pf << "\n"; // f의 주소값 출력
cout << "s = " << s << "\n"; // s값
cout << "ps = " << ps << "\n"; // s의 주소값 출력
system("pause");//비쥬얼 스튜디오 2008 부터는 디버깅시에 이 문구를 사용하지 않을 시에 바로 디버깅이 종료되어버림.
return 0;
}
////////////////////////
출력화면
문자 타입의 주소는 저렇게 에러가 난다.
///////////////////
그렇다면 왜 ? 포인터는 정해진 타입의 포인터로 만 정해야 하는걸까?
하는 질문이 있을 수 있다.
타입을 정하지 않고 포인터를 쓰게되면
포인터는 해당 값의 주소 를 가리키기 때문에
해당 값의 주소 이후의 공간이 어디까지 쓰이는지[해당 변수가 무슨 타입인지에 따라 바뀜] 알 방법이 없다.
그래서 타입을 정해줘야 이러한 오류가 생기지 않기에 타입을 꼭 맞추어줘야 한다는 것이다.
[void는?]
'공부 > C++' 카테고리의 다른 글
주소를 사용하여 정보에 접근하기[포인터를 사용해서 포인터가 가리키는 값을 바꾸는 방법] (0) | 2011.11.24 |
---|---|
무슨 타입이든 가리킬 수 있는 void 포인터 (2) | 2011.11.24 |
흔하디 흔한 포인터의 개념 -1 (0) | 2011.11.24 |
인자를 사용한 멤버 초기화 리스트 사용 (0) | 2011.11.23 |
생성자의 초기화 리스트 사용 예제 (0) | 2011.11.23 |