포인터에 대해서..글을 써야 한다.


일단…

포인터에 대한 글을 써야 한다….


마소에 연재하는 것이다.


포인터를 내가 접한것은..대학교2학년…


그때는 도스라는 녀석을 가지고 개발을 했을때이다.


포인터의 주소가 실제 물리메모리의 주소와 같았다.


그런데, 지금은그렇지 않다…


C나 C++에서 포인터가 가르키고 있는 주소는

더이상 물리 메모리 주소는 아닌것이다.


뭐...당연한 것이다….


하지만, ….


음……..

이 포인터에 대한 글을 써야 한다…

이런..



음……….


음…………………..


음…..그렇다…..


주소…….


주소에 대해서 이야기 해보자….

메모리 주소…


요즘은 실제 메모리를 직접 쓰는 OS는 없다…

모두다...가상메모리라는 개념을 만들고…

물리메모리를 아주 효과적으로 사용하고 있는 것 같다…


아주 효과적으로 말이다!!!


간만에 글을 쓰니..어색하군요…..


포인터를 알아?

모르면 모른다고해~~~~!!


니들이 게맛을 알아?

아니 포인터를 알아?



포인터는…….

포인터는 뭐지?

포인터 변수가 있지….


결국 주소를 가르치는 곳이지…..


메모리의 주소


메모리의 역할을 데이타를 저장하는 역할을 하지…


데이타를!!!!


데이타를 저장하는 역할을 한다…


저장시킬려면…


포인터변수를 선언하고….


그곳에 저장을 하면...결국


값이 메모리에 저장이되는 것이다…..


자...테스트를 해보자…


음…


cData라고 하는 녀석을 만들고…

자료형은… CHAR….


그리고, ‘a’를 저장한다….


그리고 cData라고 하는 녀석의 메모리 주소값을 알아낸다.


메모리 주소값…..


&


&&&&&

이 녀석을 이용하면…


메모리의 주소값을 알주 있쥐~



&은 뭐라고 읽어야 하는가?



메모리의 주소를 알아내어…


그 주소를 저장하는 곳이


포인터 변수랍다…


CHAR cData = ‘a’;


&cData; ← 이러게 하면… cData의 메모리 주소를 알 수 있죠~!


당연한거지만...말입니다.


이 주소를 알아서 뭘할 수 있을까요???


일단 이 주소가 뭔지나  알아봅시다.





int _tmain(int argc, _TCHAR* argv[])

{

char cData;

printf("0x%08X", &cData);


return 0;

}


이렇게 하면…

이렇게 화면에 찍히죠~~!!

흐~~



음...저 메모리 주소가…


char cData; 라는 변수가 살고 있는 곳이죠~!

ㅎㅎ

cData라는 변수의 주소이죵~~!!


메모리 주소!!


메모리 주소~!!!


뭐죠?

메모리 주소…

그럼 뭐가 필요한거죠?



메모리 주소가 얼마나 중요한 건데~~~!






미친감자가..갑자기..

포인터가 먹을  수 있는 거냐고 물어봅니다…


이상한가?

흐흐흐






음...어떻게 풀어가볼까?

흐…

이렇게 글을 써도 되는것일까?


죄송합니다.



흐..성령님…

죄송해요…

이렇게 무식함으로 글을 써가는것..죄인가요?



모르겠다…

살려보자…


다음장면은..

먹어버리는거쥐~~~

포인터를


음…


포인터를 먹어버리는 미친감자?^^;


모르겠다…

20일까지 …

보내줘야 하는데…

모르겠다…


음…


음..

음…

포인터변수는 메모리 주소값을 저장하는 변수인데..



음...여러분 어떻게 했으면 좋겠어요?


이중 포인터는 뭘까요?


포인터의 포인터값을 가지고 있으니..


주소안으로 가면 또다른 주소가 나오는 거쥐뭐~~!!


보통 2차원 배열같은경우 이런거죠~~!


실제값은 주소의 주소값을 가야 나오는 거져~~!!

그렇죠^^?


흐흐흐

포인터를 먹던 미친감자

스스로 이게 뭐하는 짓인가 생각이 들어

눈물을 흘리는 장면이다.


하지만 미친감자 군대가기전 정말 이러고 살았던 적이 있다.

컴퓨터와 진정한 대화를 나눈다고..

기계어로 대화를 시도하였고…

포인터정도 먹는것은 아무 이상한 짓도 아니였다.

지금 나이먹어 사람답게(?) 변한것이다.

ㅎㅎㅎ

이전에는 아니 내가 포인터를 먹고 소화해내다니..하고 기쁨의 눈물을 흘렸을 것이다.~!



자 자 포인터에 대한 설명 들어갑니다.


메모리 주소값을 저장하기 위한 자료형이다라고

설명해보았습니다!!!


맞죠^^?


포인터는 자료형 맞죠^^?


자료의 형태


주소값을 저장하는 자료형태…


그러면…


메모리 주소는 뭔가요?


메모리에도 주소가 있는 건가요?


야..메모리는 너의 주소는 어떻게 되니~!


나는 0x0101abcd 야..


너는 주소가 어떻게 되니?

이따가 놀러가고 싶은데~~!!


나 오늘 그 금방에 놀러갈 일이 있거든~~!!


그것 아닌것 같은데;;

이상한 헛소리를 하고 있습니다.


발차기 들어갑니다~~(너무 폭력적인가요?;;;;;;)


음..사랑으로 감싸줄까요^^?

그럽시다…

내가 중보기도해줄께..

너가 정신차리고...올바른 소리를 할 수 있도록 말이야~!




이런 정말 쓸대없는 그림으로 공백을

채워가고 있습니다.

죄송합니다.


제가 무식하고 창의력도 없어서….흐~

성령님 도와주소서~!























이번달은 포인터에 대해서 썰을 풀어야 한다.


포인터….

포인터는 무엇인가?


포인터…..pointer


가리키는 놈……………..


가리키는 녀석….


구글에서 ..이렇게 검색을 해보았다.


pointer



과연 뭐가 검색결과로 나올줄 아세요???


과연 개발자가 원하는 그 결과가 나올까요???


흐흐흐흐



결과는~~~!!!


개가 나오는 군요…


아….


‘포인터’

개였군요…


영어로 ‘pointer’로 검색하면

개의 한 종이 나오는 것이군요!!


‘포인터’종은 이렇게 몸에 포인터가 많죠~!

ㅋㅋ



사냥개였군요…

영국개군요….


성격이 있네요.~오~

침착하고 쾌활하며 충성스러우며 부드러우면서 활동적이며 애정이 풍부한 성격~

음..아주 훌륭한 성격인데요~~!!



자 이번엔 한글로 ‘포인터’를 검색해보니…

음...

3가지를 보여주는 군요..구굴은 말이죠~

그런데, 씨언어의 포인터가 가장먼저 나오고

그다음 개~

그 다음은 프레젠테이션시 사용하는 포인터~!

ㅎㅎㅎ


그래도, 개발자가 원하는 포인터를 먼저 보여주는 군요…….

ㅎㅎㅎㅎ



암튼….


포인터는

점이 많은 녀석이던가?

아니면...뭔가를 가르키는 것을 말하는 것 같군요…


그렇죠?


가르키는 것~~


손가락 같은 것으로~~!!


이런 것~~~!!


음..컴퓨터에서 많이 보던것인데..

인것도 결국 뭔가를

가르킬때 사용하는 것 맞네요~~~!!



아니면

레이즈 포인터~~



컴퓨터 프로그램 C언어나 C++언어에서

포인터는 결국 메모리를 가르키는

녀석이지용~~


메모리 주소를 말이죠~~!!!


음...컴퓨터에서 메모리를 정말 중요하죠~

그렇죠?

당연하죠~!

ㅋㅋㅋ


메모리에는 0번부터 주소가 부여가 되고요..


내가 원하는 정보가 데이타가

어느 주소에 저장되어 있는지를 알려주는 거죠~~!!!


메모리 주소는 0번부터 시작한다…..


그리고………..

CPU라는 녀석의 메모리 주소역량에 따라…

결정되죵

다들 아시죠^^?


보통 32비트 CPU는 메모리 주소도 32비트

보통 64비트 CPU이면…..당연히 메모리 주소도 64비트


이 녀석은..32비트 CPU~~

이녀석의 스팩문서를 보면..

이런 문구가 있죠~~!



Address bus...32비츠( bits)라고 젹혀있죠~~

음….32비트 컴퓨터라는 말이죵….

물론 데이타 버스도 확인해  봐야 하죵…


암튼….


어드레스 버스….~~~!!!!


음..어르레스 버스가 32비트!!


32비트 ….어드레스 버스입니다.흐~~~


이런것은 아니죠?


흐흐흐

미안합니다.

음...엉뚱한 이야기나 하고 미안합니당~~!!


알면 됐어~~!



알면 됐어~!


자 64비트 CPU는 ???


음… AMD가 만든 32비트 호환 64비트 CPU~~!!

이 녀석은...어드레스 버스가 64비트죵~~!






64비트 어드레스 버스가 나가신다~~!!

비끼시용~~!!



음...암튼…


32비트 어드레스 버스이면…

보통 4Gbyte의 메모리를 접근 가능하고


64 비트이며…~~


너무 커서 말씀 드릴 수 가 없을 것 같군요…

기억이 나질 않았어…

알았었는데..


바로 검색하면...이렇게 나와용~~!

16엑사바이트~~




2의 64승~~이면…

64-bit는 2의 64승, 18446744073709551616BYTE, 18EB (1EB = 1000TB)



18446744073709551616BYTE

18EB (1EB = 1000TB)

18


https://technet.microsoft.com/ko-kr/library/cc700734(TechNet.10).aspx



바이트 크기

SI 접두어

전통적 용법

이진 접두어

기호(이름)

기호

기호(이름)

V값

kB (킬로바이트)

10001 = 103

KB

10241 = 210

KiB (키비바이트)

210

MB (메가바이트)

10002 = 106

MB

10242 = 220

MiB (메비바이트)

220

GB (기가바이트)

10003 = 109

GB

10243 = 230

GiB (기비바이트)

230

TB (테라바이트)

10004 = 1012

TB

10244 = 240

TiB (테비바이트)

240

PB (페타바이트)

10005 = 1015

PB

10245 = 250

PiB (페비바이트)

250

EB (엑사바이트)

10006 = 1018

EB

10246 = 260

EiB (엑스비바이트)

260

ZB (제타바이트)

10007 = 1021

ZB

10247 = 270

ZiB (제비바이트)

270

YB (요타바이트)

10008 = 1024

YB

10248 = 280

YiB (요비바이트)



엑사 바이트….

10의 18승~!!


TB를 지나.. PB(페타바이트)를 지나…

EB(엑사 바이트)가 나오는 군요…


이게 ...암튼. ..64비트로 표현할수 있는 메모리의 크기 라는 점…


암튼..이정도로 사용하기 불가능하다는 점…


거의 무한의 메모리 주소르 느껴진다는 점….


무한~~!!


명수 형님~~

10엑사바이트 입니당~~!!


음…..

하루에 한개의 블로그를 올려야한다….

음...나도 결국 화이트해커야 되야야 한다.

왜냐하면, 빼앗긴 영토를 찾아야 하는 것이기 때문이다.

공중권세 잡은자에 의해 우린 결국 이용당한다.


이 공중권세 잡은자에게서 벗어나기 위해서는

우리의 감정을 화이트해킹 해야 하며, 우리 메모리 우리의 생각을

성령으로 공격해야한다.


믿음이라는 방법으로 말이다…

할렐루야~~!!


오늘도 귀여운 엽기 프로그래밍 이야기를 해보겠습니다.

보혜사 성령님 도와주세요~!!!


미친감자………..오늘은 무슨 이야기를 해야할까요???


이번달 배열에 대해서….문자열에 대해서 이야기를 했죠~!!!!!



이제 포인터에 대한 이야기를 해야 겠죠?



포인터~!


포인터...무서운 포인터~~~

포인터에 대해서 알아봅시당~~!!

할렐루야~!



+ Recent posts