C++
[C++] ํฌ์ธํฐ์ ๋์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น
carsumin
2024. 10. 7. 21:26
ํฌ์ธํฐ
- ์ด๋ค ๋์์ด ์์นํ ๊ณณ์ ๊ฐ๋ฆฌํค๋ ์ฃผ์๋ฅผ ์ ์ฅํ๋ ๋ณ์
// ํฌ์ธํฐ ์ ์ธ ํ์
// TypeName* ptrVar;
int* iPtr;
- ํฌ์ธํฐ๊ฐ ์ ํจํ ๋์์ ๊ฐ๋ฆฌํค๊ฒ ํ ํ ์ฌ์ฉํด์ผ ํจ
int a;
int* iPtr = &a; // a๋ฅผ ๊ฐ๋ฆฌํด
*iPtr = 10; // a์๊ฐ 10
ํฌ์ธํฐ ์ฌ์ฉ ์์
#include <iostream>
using namespace std;
int main()
{
int a = 10;
int* ptr;
ptr = &a; // ptr์ a์ ์ฃผ์๋ฅผ ๋ฃ์
cout << "ptr์ด ๊ฐ๋ฆฌํค๋ ๊ฐ : " << *ptr << endl; // ์ถ๋ ฅ : 10
*ptr = 20;
cout << "๋ณ์ a์ ๊ฐ : " << a << endl; // ์ถ๋ ฅ : 20
return 0;
}
๋์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น
- ํ๋ก๊ทธ๋จ ๋์ ์ค์ ๊ธฐ์ต๊ณต๊ฐ์ ํ์์ฑ ๋ฐ ์์๋์ ๊ฒฐ์ ํ์ฌ ํ์ํ ๊ณต๊ฐ์ ํ ๋นํ๋ ๊ฒ
- ํฌ์ธํฐ ๋ณ์๊ฐ ํ ๋น๋ ๊ธฐ์ต ๊ณต๊ฐ์ ๊ฐ๋ฆฌํค๊ฒ ํจ
- ๊ธฐ์ต ๊ณต๊ฐ์ ์์ฑ ์์ : new ์ฐ์ฐ์ ์คํ ์์
- ๊ธฐ์ต ๊ณต๊ฐ์ ์๋ฉธ ์์ : delete ์ฐ์ฐ์ ์คํ ์์
// ๋ฉ๋ชจ๋ฆฌ ํ ๋น ์ฐ์ฐ์
ptrVar = new TypeName;
ptrVar = new TypeName[n];
// ๋ฉ๋ชจ๋ฆฌ ๋ฐ๋ฉ ์ฐ์ฐ์ (๋ฐ๋ฉ ํ์ ํต์ผํด์ค์ผํจ)
delete ptrVar;
delete [] ptrVar;
๋จ์ผ ๋ฐ์ดํฐ ๊ณต๊ฐ์ ํ ๋น ๋ฐ ๋ฐํ
int* intPtr;
intPtr = new int;
*intPtr = 10;
...
delete intPtr;
intPtr = nullptr; // C++ 11ver๋ถํฐ ๋์
. ์๋ฌด๊ฒ๋ ๊ฐ๋ฆฌํค๊ณ ์์ง ์์
๋ฐฐ์ด ๋ฐ์ดํฐ ๊ณต๊ฐ์ ํ ๋น ๋ฐ ๋ฐํ
int* intPtr;
intPtr = new int[4];
*intPtr = 10;
*(intPtr+1) = 20;
intPtr[2] = 30;
intPtr ๋ฐฐ์ด์๋ ์๋์๊ฐ์ด ๊ฐ์ด ํ ๋น๋ ๊ฒ์ด๋ค.
10 |
20 |
30 |
// ๋ฐํ
delete [] intPtr;
intPtr = nullptr;