int x = 3;
cout<< x << endl; // 변수에 저장되어있는 값 3이 나온다.
cout<< &x << endl; // 변수 x의 주소가 나온다.
int x = 3;
cout<< x << endl; // 변수에 저장되어있는 값 3이 나온다.
cout<< *(&x) << endl; // ≒ cout<< *&x << endl; ≒ cout<< x << endl;변수 x의 주소가 나온다.
int x = 3;
int *ptr = &x;
int y = 5;
int *pointer = nullptr;
pointer = &nullptrr;
다음과 같이 함수의 리턴값으로 포인터를 가질 수도 있고, 파라미터로 포인터를 사용할 수도 있다.
int *pointerfunction(int *ptr)
{
return nullptr;
}
int *a; // 선언만 하면 warning이 뜸.
int *a = nullptr; // 초기화를 해주자.
int arr = [1,2,3,4,5];
int *ptr = arr;
cout << arr[0] << " " <<arr[1] << endl; // 1 2
cout << array << endl; // 010FFAB8
cout << &(array[0]) << endl; // 010FFAB8
cout << *arr << endl; // 1
cout << ptr << endl; // 010FFAB8
cout << *ptr << endl; // 1
cout << sizeof(arr) << endl; // 20
cout << sizeof(prt) << endl; // 32비트에선 4, 64비트에선 8
int *ptr = arr
;sizeof(arr)
는 배열의 총 사이즈인 20이다.sizeof(ptr)
는 4(32bit)이다.sizeof(ptr)
는 포인터의 크기를 알려줌.void arrptrfunction(int arr[]);
void arrptrfunction(int *arr);
//void changeArr(int arr[])
void changeArr(int *arr) // arr의 값을 바꿔주는 함수
{
*arr = 100;
}
int main()
{
int arr[5] = {1,2,3,4,5};
void change(arr); // C언어 에선 함수 밖에서도 값이 바뀌도록 파라미터를 포인터로 넣어준다,
//c++에선 레퍼런스를 더 많이 사용
cout << arr[0] << endl; // 100
}
int main()
{
// x86기준
int a = 7;
int *ptr = &a;
cout << (int)(ptr - 1) << endl; // 19921724
cout << (int)(ptr) << endl; // 19921728
cout << (int)(ptr + 1) << endl; // 19921732
cout << (int)(ptr + 2) << endl; // 19921736
int arr[] = {1,2,3,4,5};
int *arrptr = arr;
cout << *(arrptr + 0) << " " << (int)(arrptr + 0) << endl; // 1 19921724
cout << *(arrptr + 1) << " " << (int)(arrptr + 1) << endl; // 2 19921728
cout << *(arrptr + 2) << " " << (int)(arrptr + 2) << endl; // 3 19921732
cout << *(arrptr + 3) << " " << (int)(arrptr + 3) << endl; // 4 19921736
}