타입에는 두 가지 종류가 있다. value type과 reference type
value type은 identifier가 가르키는 메모리 위치에 자신의 [값]을 그대로 담고 있다.
reference type은 identifier가 가르키는 메모리 위치에 실제 정보를 가진 객체의 pointer를 [값]으로 가지고 있다.
일반적으로 함수 호출시 인자로 넘길때 value/reference 타입 모두 call by value로 넘어간다.
value타입은 자신의 [값]이 그대로 복사되어져서 넘어가고
ref타입은 pointer [값]이 그대로 복사되어져서 넘어간다.
그리고 이 값들은 함수 내부의 [별도의] identifier에 바인딩 되어서 다루어 지게 된다.
함수 내부에서 이 별도의 identifer를 가지고 여러가지 일을 할 수 있다.
value type은 값을 바꾸어 봤자 어차피 복사 된 값을 가지고 하는것이니 외부에 아무런 영향을 미칠 수 없고
reference type은 포인터는 복사된 것이기는 하지만 포인터가 가르키는 그 객체는 같은 것이므로
객체의 내용에 변경을 가하면 외부의 identifer가 가르키는 그 객체의 내용도 변경이 되는 것이다.
함수 외부의 identifer 자체는 영향을 받지 않는다.
함수 정의시 파라미터에 (C#의 경우 ref) 특별한 키워드를 달아주면 해당 파라미터는 call by ref로 작동한다.
call by ref는 값을 넘기는 것이 아니다. identifier자체를 넘기는 것이다.
이때 넘겨진 identifier는 함수내부의 identifier와 [일체]가 된다.
함수 내부에서 identifier를 변경하면 외부의 identifer도 변경된다.
여기 정말 수준 낮네요. call by reference, call by value도 분간 못해서 물어보는놈이나 논쟁하는놈이나 정리해주는놈이나. 프로그래밍갤러리가 원래 프로그래밍언어 입문서에서나 다루는 이야기를 떠드는 그런 허접한곳이었습니까? 제발 꺼지세요
ㅁㄴㅇㄹ//대부분 너처럼 제대로 모르고 이해했다고 생각하니까 문제지.
ㄴ 지랄병떨고있네 ㅉㅉㅉ
ㄴ 니새끼야말로 제대로 모르고 이해했답시고 여기서 정리해주는거지ㅉㅉㅉㅉ 병맛 쩌넹
아가야 잠이나 더 자라 ㅋㅋㅋ
ㄴ 님아 프로그래밍 배틀하렐요? ㅋㅋㅋㅋㅋ
ㄴ 모든분야 가능요. 프로그래밍이던 해킹이던 누가 먼저 목표도달하는지 ㄱㄱ?
이 글 쓴 새끼도 제대로 이해 못했네. 야 시발 ㅋㅋ 존나 웃기네. C#의 ref 키워드랑 C++의 &는 별도의 자료형으로 존재해서 변수로도 쓸 수 있냐 아니냐의 차이일 뿐이다. 값을 관점으로 본다면 Call by reference라고. 문법적으로도 C++의 reference type은 접근하면 바로 변수의 값을 액세스하게 되어있지 메모리 주소를 액세스하게 되어있냐?
꺼져 애새끼야 ㅋㅋ
ㅅㅅㅅ//이불 준비해 줄까?
그래서 이게맞는말이냐 틀린말이냐? 자바스크립트에도 해당하는말인가?
되어져서->돼서
ㅁㄴㅇㄹ//던->든