C++์์๋ & ๊ธฐํธ๋ฅผ ํตํด ๋ฐ์ดํฐ์ ์ฃผ์์ ์ ๊ทผํ ์ ์์ต๋๋ค.
๊ฐ์ 16์ง์ ์ซ์๋ก ๋ฐํ๋ฉ๋๋ค.
์์๋ฅผ ๋ณด์ฌ๋๋ฆฌ๊ฒ ์ต๋๋ค.
#include <iostream>
using namespace std;
int main() {
int num{10};
cout << "Value of num is: " << num << endl;
cout << "sizeof num is: " << sizeof(num) << endl;
cout << "Address of num is: " << &num << endl;
return 0;
}
๋น์ทํ ์์๋ฅผ ํฌ์ธํฐ์ ์ ์ฉํ๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
#include <iostream>
using namespace std;
int main() {
int *p;
cout << "Value of num is: " << p << endl;
cout << "Address of num is: " << &p << endl;
cout << "sizeof num is: " << sizeof(p) << endl;
p = nullptr;
cout << "Value of num is: " << p << endl;
return 0;
}
ํฌ์ธํฐ p๋ฅผ ์ ์ธํ ๋, ์ด๊ธฐํ๋ฅผ ํ์ง ์์๊ธฐ ๋๋ฌธ์ ์ด๊ธฐ์๋ garbage data๊ฐ ๋ค์ด์์ด์
์ด์ํ value๊ฐ ๋ค์ด ์์์ต๋๋ค.
์ดํ p = nullptr; ๋ฅผ ํตํด์ ๊ฐ์ 0์ผ๋ก ๋ณ๊ฒฝํ์์ต๋๋ค.
์ค์ํ ๊ฒ์ sizeof(pointer) ์ ์ํฉ์ ๋๋ค.
์์๋ค์ํผ ํฌ์ธํฐ๋ ๋ค๋ฅธ ๋ณ์ ํน์ ํจ์์ ์์น๊ฐ์ ์ ์ฅํ๊ณ ์๋ ๋ณ์์ ๋๋ค.
์ฆ, sizeof(pointer)์ ๊ฐ์ ํฌ์ธํฐ๊ฐ ๊ฐ๋ฅดํค๋ ์ฃผ์์ ์๋ ๋ณ์ ํ์ ๊ณผ๋ ๋ฌด๊ดํฉ๋๋ค.
๋ค์ ๋งํ์๋ฉด, ๊ฐ ํฌ์ธํฐ๊ฐ ๊ฐ๋ฅดํค๋ ๊ฐ์ ํ์ ๊ณผ ํฌ์ธํฐ์ ์ฉ๋์ ๋ฌด๊ดํฉ๋๋ค.
๋ชจ๋ ํฌ์ธํฐ์๊ฒ sizeof ํจ์๋ฅผ ์ ์ฉํ ๊ฐ์ ์ ๋ถ ๋์ผํ๊ฒ ๋ํ๋ฉ๋๋ค.
#include <iostream>
int main() {
int *p1{nullptr};
double *p2{nullptr};
unsigned long long *p3{nullptr};
vector<string> *p4{nullptr};
string *p5{nullptr};
cout << "\nsizeof p1 is: " << sizeof p1 << endl;
cout << "sizeof p2 is: " << sizeof p2 << endl;
cout << "sizeof p3 is: " << sizeof p3 << endl;
cout << "sizeof p4 is: " << sizeof p4 << endl;
cout << "sizeof p5 is: " << sizeof p5 << endl;
return 0;
}
ํ์ง๋ง ์ฐ๋ฆฌ๋ ํฌ์ธํฐ๋ฅผ ์ ์ธํ ๋ ํ์ ๋ ์ ์ธํ์ต๋๋ค.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ int ํ์ ํฌ์ธํฐ์ double ํ์ ๊ฐ์ ๋ํ ์ฃผ์๋ฅผ ์ ์ฅํ ์ ์์ต๋๋ค.
ํฌ์ธํฐ๋ ์ ์ธ๋ ํ์ ๊ณผ ๋ค๋ฅธ ํ์ ์ ๊ฐ์ ๋ํ ์ฃผ์๋ฅผ ์ ์ฅํ ์ ์์ต๋๋ค.
#include <iostream>
int main() {
int score{10};
double high_temp{100.7};
int *score_ptr{nullptr};
score_ptr = &score;
cout << "Value of score is: " << score << endl;
cout << "Address of score is: " << &score << endl;
cout << "Value of score_ptr is: " << score_ptr << endl;
// score_ptr = &high_temp; // Compiler error
cout << endl;
return 0;
}
'C++ > ํฌ์ธํฐ (Pointers)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[C++] ๋ฐฐ์ด๊ณผ ํฌ์ธํฐ์ ๊ด๊ณ (Relationship Between Arrays and Pointers) (1) | 2023.12.19 |
---|---|
[C++] ๋์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น (Dynamic Memory Allocation) (1) | 2023.12.19 |
[C++] ์ญ์ฐธ์กฐ (Dereferencing a Pointer) (0) | 2023.12.19 |
[C++] ํฌ์ธํฐ์ ์ ์ธ (Declaring Pointers) (0) | 2023.12.19 |
[C++] ํฌ์ธํฐ(Pointer)๋? (0) | 2023.12.19 |