방금 어떤 글보다가 C 에는 call by reference 가 없다는데.. 이게 무슨말이냐../
어느나라 표준이 그렇냐..?
나도 좀 설명해주라.. 내가 배움이 부족해서 모르겠다.
pointer 가 function 의 argument 로 넘어갈때 int 크기의 메모리가 할당되고
거기에 pointer 가 가지고 있는 값 자체가 복사되는걸 call by value 라고 이해 하면되는거냐..?
그렇게 따지면 C++ 도 이런거 아니냐..?
아무리 어거지로 가져다 부칠려고 해도 모르곘다...
내가 배움이 짧은가 하노라
pointer 가 value 지 뭐냐
포인터 레퍼런스인데 - return 0;
cpp 에는 아예 ref 연산자가 있고
포인터가 가진 value 가 의미하는게 address일 뿐 call by ref 가 아니지
아니 그게 레퍼런스야 - return 0;
Cpp의 레퍼런스는 까보면 포인터임 - return 0;
포인터라는게 값의 레퍼런스를 담는거기 때문에 레퍼런스 맞아 - return 0;
그럼 CPP 의 레퍼런스도 call by value 라는 말인거네~
call by address? 이거 프밍 언어론에서 배운다던데..
함수 인자로 넘기는 포인터가 value 니까 call by value지
야 포인터가 By Value 면 그럼 By Reference 가 존재하긴 하는거냐? 생각해봐라 - return 0;
함수 블럭 안에서 포인터 값 바꾼다고 외부 변수 포인터 값이 변하냐..
심지어 열혈에서도 포인터는 레퍼런스라고 멀쩡히 가르치는데 대체 뭔 소리냐 - return 0;
https://www.programiz.com/c-programming/c-pointer-functions
- return 0;
근디 c가 call by value면 무슨 언어가 call by ref냐?
address value 를 통한 Reference 아님..?
가서 공부 더 하고 와라 이상한 개소리하지 말고 - return 0;
열혈 ㅋㅋㅋ..
포인터 카피를 통해서 call by ref 를 흉내내는거지 call by ref 가 아니래두
ㄱㄱㅇ// 그럼 어떤 언어라 call by ref냐?
파스칼 포트란같은애들
ㄱㄱㅇ//ㅇㅇ 그렇게 묘사될 수 있을거 같음. 다만 그 의미는 C++ 도 call by ref 가 아니라는 이야기네..? Ref 도 Pointer 로 이루어져 있으니까
걔네들은 어케 참조함?
그거 까보면 다 포인터야;;: - return 0;
값을 매개로 안하고 참조 함?
C++은 논란의여지없이 패스바이래퍼런스 맞음
열혈강의같은 쓰레기책을 당당하게 근거로 들먹이는애들도있네
ㄴ 아니 열혈 '조차' 라는 의미로 쓴건데; - return 0;
ㄱㄱㅇ//포트란이나 파스칼은 어캐 참조함?
https://gcc.gnu.org/onlinedocs/gfortran/Argument-passing-conventions.html
- return 0;
생각을 해보니까 그렇네.. 컴퓨터가 특정 메모리에 있는 값을 수정함에 있어서... 메모리 값이 없다면 어떻게 수정을 해..?
포트란 레퍼런스는 gcc에서 공식적으로 포인터다 - return 0;
파스칼 포트란의 call by ref 는 c 같이 인자로 넘길때 값을 포인터던 뭐던 로컬카피를 안하고 인자로 넘겨지면 바로 메모리상의 오리지날 value를 가리킴
그게 포인터에 신테틱슈거 뿌린거라니까 - return 0;
기존 포트란 call by ref 가 사이드이펙트가 있으니 gnu 포트란이 포인터로 넘긴다는것일뿐 call by ref 가 존재하지 않는다는건 아니지
c는 외부 포인터변수를 인자로 넣을 때 내부 포인터변수를 변경시켜도 외부 포인터변수는 변하지 않음, 파스칼, 포트란은 내부 포인터변수를 변경시키면 외부 포인터변수가 변경된다는 건가
포인터는 C에서 포인터라는 밸류를 통해 call-by-reference 시멘틱을 제공하는 신텍스라고 - return 0;
ㄱㄱㅇ//지금 하는 이야기는, C 가 Address Pointer 를 한번 Copy 하기 때문에 call by ref 가 온전하지 못하다는 이야기야..??
아 몰랑 그냥 c할래 에헤헤헤헤헿
bash/ 엄밀히 말하면 그렇지 그럼 type** 는 call by ref of ref 게.. 그냥 adress value 를 copy한 것일뿐이다.
포인터카피없이 넘기려면 아주 제한된 상황에서 abi어겨가면서 뻘짓해야하는뎅
ㄱㄱㅇ// 어떤 의민지는 알겠어. 그럼 다시 궁금한 부분이 있음. CPU 가 Memory 상의 Data 를 Load 하기 위해서는 Memory Point 가 필요한데, 어떻게 보면 이부분도 Memory 상에 존재하는 Data 의 주소 값을 Cpu 의 Register 로 Copy 하고 명령을 실행하는건데,, 그럼 이부분도 Copy 가 일어나잖아.. 그럼 모든 프로그램은 Call by Ref 가 없는거야..?