* ๋ฉ๋ชจ๋ฆฌ
์ปดํจํฐ์ ๋ฉ๋ชจ๋ฆฌ๋ ๋ฉ๋ชจ๋ฆฌ ์ ์ ์ฐ์๊ณผ ๊ฐ๋ค.
๊ฐ ์ ์ ํฌ๊ธฐ๋ 1byte ์ด๊ณ ๊ณ ์ ์ ์ฃผ์๊ฐ ์๋ค.
int i;
์์ ๊ฐ์ด int ํ์ ์ ์ ์ธํ๋ฉด 4Byte์ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ์์ฝํ๊ฒ ๋๋ค.
์ปดํจํฐ์ ๋ฉ๋ชจ๋ฆฌ๊ฐ 128GB ๋ผ๊ณ ํ ๋, 128GB ์ค 4Byte์ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ์์ฝํ๋ ๊ฒ.
cout << &i << "\n";
i ์ ์ฃผ์๋ฅผ ์ถ๋ ฅํด๋ณด์.
์ฌ์ฉํ๋ ๋ฉ๋ชจ๋ฆฌ ์ ์ ์ฒซ๋ฒ์งธ ์ฃผ์๋ฅผ ๊ฐ์ ธ์์ ์ถ๋ ฅํ๊ฒ ๋๋ค.
๋ฃ๋ ๊ฐ์ด ๋ฌ๋ผ์ ธ๋ ์ฃผ์๋ ๋ฐ๋์ง ์๋๋ค.
์ฃผ์๊ฐ์ OS, ์คํ์๊ฐ ๋ฑ์ ๋ฐ๋ผ ์ฃผ์ํ ๋น์ด ๋ฌ๋ผ์ง๋ค.
* ํฌ์ธํฐ
๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ ์๋ฐ, ํ์ด์ฌ, ์๋ฐ์คํฌ๋ฆฝํธ ์ธ์ด๋ ๊ฐ๋น์ง ์ปฌ๋ ํฐ๊ฐ ํด์ค๋ค. ๋์ ๊ฐ๋ฐ์๊ฐ ์ง์ ๋ณ์์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํ๊ฑฐ๋ ํด์ ํ ์ ์๋ค.
ํ์๋ ๋ฒจ ์ธ์ด์ธ C, C++ ์ ๊ฐ๋น์ง ์ปฌ๋ ํฐ๊ฐ ์๋ค. ๊ฐ๋ฐ์๊ฐ ์ง์ ํ์ํ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์์ฝํ๊ณ ํด์ ํด์ผ ํ๋ค. ๋์ ํฌ์ธํฐ๋ฅผ ์ง์ํ๋ค.
Pointer: ๋ฉ๋ชจ๋ฆฌ์ ์ฃผ์๋ฅผ ๋ด๋ ํ์ . ๋ณ์์ ์ฒซ๋ฒ์งธ ๋ฐ์ดํธ ์ฃผ์๋ฅผ ๊ฐ๋ฆฌํจ๋ค.
๋ฉ๋ชจ๋ฆฌ ๋์ ํ ๋นํ ๋, ๋ฐ์ดํฐ ๋ณต์ฌ ์์ด ํจ์ ๋งค๊ฐ๋ณ์๋ก ์ฌ์ฉํ ๋, ํด๋์ค ๋ฐ ๊ตฌ์กฐ์ฒด๋ฅผ ์ฐ๊ฒฐํ ๋ ์ฌ์ฉํ๋ค.
Pointer ์ ์ธ ๊ธฐ๋ณธํ:
<ํ์ > * <๋ณ์๋ช > = <ํด๋น ํ์ ์ ๋ณ์์ ์ฃผ์> |
int *b = &a;
*์ ์์คํฐ๋ฆฌ์คํฌ๋ผ๊ณ ๋ถ๋ฅธ๋ค.
๊ฐ์ ํ์ ์ผ๋ก ์ ์ธํด์ผ ํ๋ค.
#include <iostream>
using namespace std;
double a = 4.4;
int c = 10;
int main(){
double *b = &a;
int *d = &c;
cout << sizeof(b) << "\n";
cout << sizeof(d) << "\n";
}
4 4 |
ํฌ์ธํฐ ํฌ๊ธฐ(์ฃผ์์ ํฌ๊ธฐ)๋ ํ์ ์ ํฌ๊ธฐ๊ฐ ์๋ OS์ ๋ฐ๋ผ ๋ค๋ฅด๋ค.
64 bit ์ด์์ฒด์ ์ด๋ฉด 8byte. 32 bit ์ด์์ฒด์ ์ด๋ฉด 4byte๋ฅผ ๊ฐ๋๋ค. (๋ 64bit ์ธ๋ฐ ์ 4byte๋...)
๋ฐ์ดํฐ์ ํฌ๊ธฐ๋ ๋ค๋ฅผ์ง๋ผ๋ ์ฃผ์์ ์ต๋ ํฌ๊ธฐ๋ ๊ณ ์ ๋์ด ์๊ธฐ ๋๋ฌธ.
* array to pointer decay
#include <iostream>
using namespace std;
int a[3] = { 1, 2, 3 };
int main() {
int *c = a;
cout << c << "\n";
cout << &a[0] << "\n";
cout << c + 1 << "\n";
cout << &a[1] << "\n";
}
006F8044 006F8044 006F8048 006F8048 |
์ ์ ํ์ ์ธ ๋ฐฐ์ด์ ์ด๋ฆ์์ฒด๋ก ์ฃผ์๋ฅผ ํํํ ์ ์๋ค. ๊ทธ๋์ ์์ ๊ฐ์ด int *c = a; ๊ฐ ๊ฐ๋ฅํ๋ค.