주소 연산자 & (ampersand)

int age = 0;
cout << age;  // 0
cout << &age;  // 0013FF7C
#include<iostream>
#include<iomanip>

using namespace std;

int main() {
	char a, b, c;
	char str1[4];
	char str2[5];
	short s1, s2;
	double d;
	int i, j, k;

	cout << "a, b, c의 주소 = " << hex << (int)&a << ", " << (int)&b << ", " 
<< (int)&c << endl;
	cout << endl;

	cout << "str1의 주소 = " << hex << (int)str1 << endl;
	for (i = 0; i < 4; i++) {
		cout << "str1[" << i << "]의 주소 = " << hex << (int)&str1[i] << endl;
	}
	cout << endl;
	
	cout << "str2의 주소 = " << hex << (int)str2 << endl;
	for (i = 0; i < 4; i++) {
		cout << "str2[" << i << "]의 주소 = " << hex << (int)&str2[i] << endl;
	}
	cout << endl;

	cout << "s1의 주소 = " << &s1 << endl;
	cout << "s2의 주소 = " << &s2 << endl;
	cout << "d의 주소 = " << &d << endl;
	cout << "i의 주소 = " << &i << endl;
	cout << "j의 주소 = " << &j << endl;
	cout << "k의 주소 = " << &k << endl;

	return 0;
}

Untitled


포인터

포인터 = 주소 값을 저장 + 자료형을 포함

포인터 변수 선언

int *ptr; // int형 변수의 주소 값을 가리킬 수 있는 int형 포인터
char *ptr; // char형 변수의 주소 값을 가리킬 수 있는 char형 포인터
double *ptr; // double형 변수의 주소 값을 가리킬 수 있는 double형 포인터

잘못된 포인터 변수 선언

int* ptr1, ptr2, ptr3;
// X -> prt1은 int 형 포인터를 의미하나 ptr2와 ptr3는 단순히 int형 데이터를 표현

int *ptr1, *ptr2, *ptr3;
// O