C에는 pass by reference가 없다는 거를 이해하면 됨.
C는 무조건 pass by value임.
함수 인자로 넘어가는 포인터는 포인터형 변수가 복제되어 넘어가는 것일 뿐임.
그래서 C 포인터가 call by reference라고 써놓고 그걸 책 팔아먹는 윤성우가 개씹새끼인거임 이 새끼가 퍼트린 오개념 때문에 C린이들 삽질하는 게 20%는 늘었을거임
C는 무조건 pass by value임.
함수 인자로 넘어가는 포인터는 포인터형 변수가 복제되어 넘어가는 것일 뿐임.
그래서 C 포인터가 call by reference라고 써놓고 그걸 책 팔아먹는 윤성우가 개씹새끼인거임 이 새끼가 퍼트린 오개념 때문에 C린이들 삽질하는 게 20%는 늘었을거임
다 맞말인데 pointer가 pass by value인걸 모르면 삽질이 늘어나는지 까지는 잘 모르겟슴
늘어남. 예를 들어 void func(int* ptr) 에 int*형 포인터 p를 넘겨줘서 func(p)를 호출했다고 할때, func 함수 내부에서 ptr이 가리키는 주소를 바꿔도, func 밖에서 p가 가리키는 주소는 바뀌지 않음.
포인터가 pass by value가 아니라 pass by reference라고 생각하는 애들은 여기서부터 왜 func 바깥의 p는 안바뀌냐고 따지는거임
그건 근데 pass by reference를 아는 사람이 pointer = reference라고 생각해야 일어날 수 있는 착각이고 C로 입문하는 사람이면 거꾸로 reference를 pointer로 잘못 이해하지 않을까
그거 헷갈리면 애초에 포인터 이해를 못한거아닐까 윤성우 책을 직접 안읽어보긴했는데 포인터를 굳이 call by reference라고 적어놓은 개지랄을 한게 포인터 자체가 call by reference가 아니라 포인터를 넘겨주면 포인터의 대상의 reference처럼 동작한다는 의미로 적었을텐데ㅋㅋ
윤성우 책에서 설명을 어떻게 했냐에 따라 다를것 같은데 안읽어봐서 모르겠다
포인터가 reference처럼 동작하기 때문에 call by reference다 이것도 사실 상당히 틀린말임. 왜냐 하면 포인터는 가리키는 대상을 바꿀 수가 있고 reference는 그렇지 못하니까. 비유하자면 포인터는 손가락이고 reference는 별명임. 두개는 많이 다름
그래서 개지랄이라고 했잖슴…서로 당연히 알만한 내용을… 그런 이유로 책의 저자는 call by reference라고 표현했을꺼라는거지 그런식으로 설명하면 그냥 swap같은 함수도 직관적으로 이해하기 편해지니까
맞말인듯 디레퍼런싱 연산자나 화살표 연산자가 없는 매니지드 언어에서나 call by reference 같은 용어가 필요하지 c에서는 그런 용어가 혼동을 줌 - dc App
call by reference를 못해서 대신 pointer를 사용하는건데 pointer랑 call by reference를 같다고 해버리면 그냥 오개념이지
그리고 여기에 더 혼란을 주는게 자꾸 array랑 pointer랑 같다고 우기는 새끼들
array pointer까지 읽고 든 생각인데 reference든 array든 전부 메모리 구조 설명하기 싫어서 대충 퉁쳐서 설명하려다보니 생긴 오개념같네ㅋㅋ 결론적으로 C의 포인터를 제대로 이해하려면 어차피 메모리 구조를 이해해야된다ㅇㅅㅇ
윤성우 이 새끼가 사람 여럿 망침
난 딱히 윤성우 문제가 아니라고 생각함. 만약 그 사람이 포인터의 진실을 알려줬어도 어차피 복잡한 선언문 해석 & 작성에서 막힐거 알기 때문에 cdecl 유틸리티 쓰면서 포인터와 연관되는 수많은 유도형을 실제로 겪어보면서 자연스럽게 익혀야 한다는 의견.
복잡한 포인터 유도형은 진지하게 C 팔거 아니면 볼 일이 많진 않은데... 저기서 막히면 학부 1 2학년따리 강의도 제대로 못 쫓아가... 개념도 못잡고 있다가 C - C++ - 컴구 싹다 박살나는 사람도 봤름
이게 진짜 골때리는게 열혈강의 시리즈가 거의 바이블 수준으로 떠받들여지는 경우가 많아서 책이 잘못됐다고는 생각조차 못하는 경우가 많음...