반응형
포인터 변수는 * (aesterisk) 를 사용하여 선언한다.
#include <iostream>
using namespace std;
int main()
{
int *ptr;//포인터 변수 선언
int num = 20;// int형 변수를 선언하고 20을 저장
ptr = #//num의 메모리 주소를 포인터 변수에 저장
printf("%p\n",ptr);//포인터 변수 ptr 의 값이 출력 => num 의 주소맨 앞자리 출력
printf("%p\n",&num);//num 변수의 주소를 출력 위의 값과 동일
printf("%p\n",&ptr);//포인터의 주소를 출력 &ptr != ptr
printf("%d\n",*ptr);//ptr 주소를 찾아가서 해당 주소내에 저장되어 있는 값을 출력 즉 num 의 값.
}
포인터 변수를 선언할 때는 아래와 같이 *(aesterisk) 표시를 다양한 방식으로 선언할 수 있다.
여기서 int * 는 pointer to int 이라고 읽고 int 형 공간을 가리키는 포인터라고 생각하면 된다.
int *ptr1;//포인터 변수 선언
int* ptr2;//포인터 변수 선언
int * ptr3;//포인터 변수 선언
데이터를 선언하고 초기화 시켜줄때 포인터가 어떤식으로 작동하는지 아래의 도식화를 보면 된다.
위의 그림에서도 설명되어 있지만,
시스템이 32비트 기반인지 64 비트 기반인지에 따라 포인터의 크기가 달라진다.
- 32 비트 : 16진수 8자리
- 64비트 : 16진수 16자리
즉 32비트 시스템 기반에서는 포인터의 크기는 4byte이고
64비트 시스템 기반에서는 포인터의 크기가 8byte가 된다.
위의 그림에서는 64비트 기반의 시스템에서 테스트한 결과이다.
반응형
'C,C++' 카테고리의 다른 글
[C++] Mysql select, insert, update, delete (0) | 2023.08.16 |
---|---|
[C++] 멀티스레드 프로그래밍 (0) | 2023.08.15 |
[C++] Mac os 에서 Mysql 연결하기 (0) | 2023.08.14 |
[C,C++] 포인터 배열, 배열 포인터 (2) | 2023.02.05 |