디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

포인터는 그냥 타입의 일종일 뿐이얏

츄럴(175.200) 2017.07.07 22:31:08
조회 6508 추천 27 댓글 18
														



viewimage.php?id=3dafdf21f7d335ab67b1d1&no=29bcc427b28b77a16fb3dab004c86b6fdc843afe757fec55bf7102ec3efadaa951d8625c087aded7e36962210e6c921709402ad88ebe0ec9e0f22fba8a


프로그래밍 언어에서 

타입

타입이 가질 수 있는 집합 + 타입에 수행 가능한 연산 

으로 구성됨


예를 들어 C에서

int 타입은 

–2,147,483,648 ~ 2,147,483,647 의 정수형의 집합을 가지고(32비트)

+ - * / 등의 연산을 할 수 있음


근데 사용자가 struct로 정의한 타입은

* 곱하기를 못 쓰잖음?


포인터도 곱하기 못쓰고

더하기 빼기 연산도 좀 다르잖음?


이렇게 프로그래밍 언어에서는 타입마다 쓸 수 있는 연산다름.



그런 식으로 생각하면

포인터는 64비트의 정수형 집합을 가지고

+ - ++ -- 등의 연산에 더해서

(위 연산들도 일반적인 정수 더하기와는 다르고)

역참조 * 연산(dereference)을 할 수 있다는 거임


그냥 그게 끝임..


int* ptr;

int** ptr;

int****** ptr;


뭘 어떻게 선언하든 하는 짓은 다 똑같음

그냥 64비트 정수를 저장할 수 있고

그 정수에 대한 연산이 독특한 것 뿐임


포인터가 뭐를 가리키네 그딴 거 다 집어치우고...


포인터에는 걍 64비트 정수가 저장되고

*ptr 역참조를 하게되면 64비트 정수를 주소값으로 해석해서 변수처럼 쓰는 거임



한줄요약: 포인터는 독특한 연산(역참조)을 가진 정수형 타입이다



그럼 역참조 연산은 무엇인가?

일단 설명하자면 

포인터형 변수에 들어 있는 64비트 정수를 주소로 해석해서 거기 접근하는 거임

말로는 어렵고..

예를 들면서 설명해보겠음


int num = 0;

int* ptr = # //모든 변수는 주소값을 갖는다

void side_effect(int* pnum){

    int x = *pnum;

    *pnum = 99;

}


이렇게 선언하면 이후

*ptr = 12;     하면 num의 값이 바뀌고

int a = *ptr;  하면 a에 num의 값이 들어갈 수 있음


side_effect 함수 내부에서도 동일한 일이 일어남

int x = *pnum; 이렇게 하면 num의 값을 x에 넣는 거고

*pnum = 99;    이렇게 하면 또 num의 값이 바뀜.


여기서 역참조의 정체를 대강 파악 가능함

역참조를 쓰면 스코프에 상관없이 변수에 접근할 수 있다는 거임


이렇게 생각해보셈. *ptr이랑 *pnum 대신에 int형 변수 num을 갖다 놓는 거야

스코프 그딴 건 다 무시해 버리고.


void side_effect(int* pnum){

    int x = *pnum;

    *pnum = 99;

}


int main(void){

    int num = 0;

    int* ptr = # 


    *ptr = 12;

    int a = *ptr;

    return 0;

}


이렇게 되어 있으면

역참조를 한 부분은 이렇게 되는 거라고 생각해 보셈


void side_effect(int* pnum){

    int x = num;

    num = 99;

}


int main(void){

    int num = 0;

    int* ptr = # 


    num = 12;

    int a = num;


    side_effect(&num);

    return 0;

}


그럼 쉽져? 이게 역참조라고 생각하면 됨

여기서 중요한 건 지역변수함수에서 접근해서 변경할 수 있다는 거임


포인터가 없으면 뭔 짓을 해도 지역변수를 함수에서 변경할 수 없음

절대 불가능함 ㅋ

물론 전역 변수를 쓸 순 있겠지만 그건 존나 쳐맞을 짓임



뇌피셜 요약: 역참조 *ptr는 전에 넣어둔 주소의 변수를 대신 쓰는 것처럼 생각할 수도 있다

뇌피셜임 ㅎㅎ;



그럼 이중포인터의 예를 또 볼까용

void side_effect(int* pnum){

    int x = *pnum;

    *pnum = 99;

}


int main(void){

    int x = 0

    int* px = &x;

    int** ptr = &px; 


    *ptr = 12;

    int a = *ptr;

    return 0;

}


위에서 취소선 그은 애들은 컴파일이 안 될겁니다.

왜 안될까?

아까처럼 생각해 볼까용?


int main(void){

    int x = 0

    int* px = &x;

    int** ptr = &px; 


    px = 12;

    int a = px;

    return 0;

}


이렇게 보면 왜 안 되는지 쉽게 알 수 있다

지금 주소값을 ㅈ대로 int형 값 12로 넣으려고 하는데

만약 주소가 12인 곳을 역참조하면 어떻게 될까? 후로그램이 뒤진다

그래서 컴파일러가 int형을 int* px의 변수에 대입하는 걸 금지한다.


이제 두번하면 어떻게 되나..


int main(void){

    int x = 0

    int* px = &x;

    int** ptr = &px; 


    **ptr = 12;

    int a = **ptr;

    return 0;

}


그럼 요건 이렇게 되겠지

int main(void){

    int x = 0

    int* px = &x;

    int** ptr = &px; 


    *px = 12;

    int a = *px;

    return 0;

}


int main(void){

    int x = 0

    int* px = &x;

    int** ptr = &px; 


    num = 12;

    int a = num;

    return 0;

}


이건 말이 된다. 

int 변수에 int 값을 넣는다

그리고 int a를 int형 변수의 값으로 초기화한다

말 되네!



사실 제 머가리 속에서는 이렇게까지는 안 하고

C에서는 좌측값은 그냥 주소라고 생각합니다

우측값이구요





http://blog.naver.com/rhdnfka94/221046491976




3줄 요약

프로그래밍 언어에서 타입은 값의 집합 + 타입에 수행 가능한 연산 으로 정의된다.

포인터는 역참조라는 독특한 연산을 가진 정수형 타입이다.

(뇌피셜)역참조 *ptr 는 포인터에 넣어둔 주소의 변수를 대체하는 것으로 이해할 수 있다.

추천 비추천

27

고정닉 8

4

원본 첨부파일 1

댓글 영역

전체 댓글 0
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 해외에서 겪는 불합리한 대우에 대응 잘 할 것 같은 스타는? 운영자 25/11/03 - -
AD 저녁 뭐먹지? 오늘의 메뉴 추천! 운영자 25/10/31 - -
공지 프로그래밍 갤러리 이용 안내 [97] 운영자 20.09.28 48518 65
2900992 비트는 100k 몇번 더 왔다갔다 할거같은데 따당갤로그로 이동합니다. 02:03 9 0
2900991 ㅆㅇㅆ저새끼 개웃긴게 ㅇㅇ(218.149) 01:22 21 0
2900990 음기 충전 발명도둑잡기(118.216) 01:11 17 0
2900989 고니시 유키나가가 문경과 새재에서 히데요시에게 보낸 편지 책사풍후갤로그로 이동합니다. 00:10 17 0
2900988 와 나 대구에서 임금 체불 300만 떼먹힌걸로 피눈물 흘렸었는데 ㅆㅇㅆ(124.216) 11.06 77 3
2900986 [애니뉴스] 미소녀 시뮬레이션 게임에 대한 고찰 프갤러(121.172) 11.06 21 0
2900985 나님 프갤 뛰뛰크루 만들어볼깡? [1] ♥KiTTY냥덩♥갤로그로 이동합니다. 11.06 19 0
2900984 [애니뉴스] 코노스바 게임 관련 자료 + 이미지 + 카제나 짧은 평 프갤러(121.172) 11.06 16 0
2900982 아무래도 전 회사 다니면서 해마와 뇌량 수축이 생긴거 같아 chironpractor갤로그로 이동합니다. 11.06 23 0
2900981 모기 때문에 자는거 존나 밀렷네 ㅅㅂ [2] ♥KiTTY냥덩♥갤로그로 이동합니다. 11.06 26 0
2900980 나님 겨우 모기 때문에 쫓겨낫오.. 너무 처량행.. ♥KiTTY냥덩♥갤로그로 이동합니다. 11.06 22 0
2900979 모기한테 쫓겨서 피난 나왓당.. ♥KiTTY냥덩♥갤로그로 이동합니다. 11.06 27 0
2900978 요즘 존나 문란해서 aws 툴 키디들이 나 인프라 전문가입네 이지랄 [1] 프갤러(211.234) 11.06 34 0
2900977 나는 아직도 왜 자바가 클래스 패스 모듈 패스 따로 두는지 모르겠어 ㅆㅇㅆ(124.216) 11.06 22 0
2900976 중학생 수준 문해력 테스트라고 하는데 어려운듯.. ♥KiTTY냥덩♥갤로그로 이동합니다. 11.06 25 0
2900974 그러고보니 내가 러스트 빠는 이유중에 하나가 클라우드 비용이었지 [3] 프갤러(211.234) 11.06 45 0
2900972 시체 못 찾아서 혹시햇더니 역시 살아잇엇음 ㅅㅂ ♥KiTTY냥덩♥갤로그로 이동합니다. 11.06 30 0
2900970 ㅇㅏ 진짜 개좃같네 모기 물렷다 ♥KiTTY냥덩♥갤로그로 이동합니다. 11.06 18 0
2900969 웅 시발 증거 찾았다. 스팟 인스턴스였네 [5] 프갤러(211.234) 11.06 41 0
2900968 OCR은 항상 의뢰가 올때마다 가격이 쎈데 성공률이 너무 낮음 [4] ㅆㅇㅆ(124.216) 11.06 56 0
2900967 OCR로 600만 짜리 받을까 말까 고민되노 [3] ㅆㅇㅆ(124.216) 11.06 42 0
2900966 ㅆㅇㅆ야 당장 통장에 돈 꽂힌다고 좋아하면 안돼 [4] ㅇㅇ(124.48) 11.06 62 0
2900961 듣자하니 프로덕션 배포를 스팟 인스턴스에 하는 병신들이 있는거 같던데 [1] 프갤러(223.38) 11.06 37 0
2900960 모기 한마리 후렷는데 시체 못 찾음.. ♥KiTTY냥덩♥갤로그로 이동합니다. 11.06 20 0
2900959 ㅆㅇㅆ야 노파심에 말하건데 [4] ㅇㅇ(124.48) 11.06 66 0
2900958 [AI와 에너지] 2번째 , 3번째 내용 프갤러(121.172) 11.06 14 0
2900957 오늘도 납품 한건 완료 10만 끝 ㅆㅇㅆ(124.216) 11.06 18 0
2900956 이 날씨에 모기약 존나 뿌려도 안 뒤지고 어디서 계속 니옴 ㅅㅂ [2] ♥KiTTY냥덩♥갤로그로 이동합니다. 11.06 37 0
2900955 아니 진심 모기 개미쳣음 여름에도 한번 못 본 새끼들이 ♥KiTTY냥덩♥갤로그로 이동합니다. 11.06 29 0
2900953 초봉5000중반 물경력 [4] 프갤러(112.157) 11.06 58 0
2900952 회사에서 국비출신 ai? 개발자 데려오려고 하는데 [3] 프갤러(222.108) 11.06 44 0
2900947 코드로 밥벌어먹기 어렵다 ㅆㅇㅆ(124.216) 11.06 26 0
2900946 코딩 독학하려는데 좋은 영상이나 강의 추천해줄 수 있나요 [1] 고사리(58.228) 11.06 37 0
2900944 이 세상은 도서관의 부분집합이다. 재현갤로그로 이동합니다. 11.06 19 0
2900943 vim이거 쓸 이유가 잇나여 [5] 르르곳사랑갤로그로 이동합니다. 11.06 52 0
2900942 싼게 비지떡이야. 값을 낮추지 말고 퀄리티만큼 받아라 [2] 프갤러(121.129) 11.06 30 0
2900940 감기 걸리면 기분 좋음? [2] ♥KiTTY냥덩♥갤로그로 이동합니다. 11.06 22 0
2900939 저장용 ♥KiTTY냥덩♥갤로그로 이동합니다. 11.06 26 0
2900938 표정 너무 무서웡 ㅠㅅ ㅠ ♥KiTTY냥덩♥갤로그로 이동합니다. 11.06 17 0
2900936 좌파 박지원 서해피격 은폐 관련 징역 구형 ♥KiTTY냥덩♥갤로그로 이동합니다. 11.06 14 0
2900935 웅.. ♥KiTTY냥덩♥갤로그로 이동합니다. 11.06 15 0
2900934 미쿡 뱅기 폭발한거 ㅇㅇ(223.39) 11.06 27 0
2900933 대학생이 프리랜서로 큰 건 따기는 어렵겠지? [1] ㅇㅇ(124.51) 11.06 39 0
2900932 나님 개피궁해서 애널은 일찍 씻준 할게양⭐+ ♥KiTTY냥덩♥갤로그로 이동합니다. 11.06 28 0
2900931 대학원생, 연구원들 상대로는 다 반값 받는중인데 입질이 잘 안오노 ㅆㅇㅆ(124.216) 11.06 28 0
2900930 나는내향적이야 나는내향적이란다 손발이시립디다갤로그로 이동합니다. 11.06 27 0
2900929 ❤✨☀⭐⚡☘⛩나님 시작합니당⛩☘⚡⭐☀✨❤ ♥KiTTY냥덩♥갤로그로 이동합니다. 11.06 17 0
2900928 내년에도 나라에서 백수짓하라고 함 타이밍뒷.통수한방(1.213) 11.06 34 0
2900927 9500억달러 vs 3500억달러...대미 투자액 진실은? 발명도둑잡기(118.216) 11.06 15 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2