대부분의 언어에서는 pass by value를 쓴다. 그것이 안전하기 때문!!! pass by value 함수 호출 시에 매개변수의 값을 복사해서 전달한다. int val = 3 add(val) add함수 안에서 인자는 바꿔보았자 바깥이 val이 바뀌지 않는다. pass by reference 인자로 받은 값을 바꾸면 바깥의 값도 바뀐다. c에서는 아예 pass by reference 지원하지 않고, c++에서는 pass by reference도 지원한다. c에서 간혹 가다 포인터를 매개변수로 넘겨주는 것을 pass-by-reference로 가르치는 경우가 있는데 이는 명백한 오류이다. pass by assignment mutable한 오브젝트면 pass-by-reference방식으로, immutable..
MIPS Green Card를 보면, Text(Code), Static Data, Dynamic Data 영역과 Stack이 있는것을 볼 수 있다. Text영역에는 실행할 프로그램의 코드가 저장된다. CPU는 코드 영역에 저장된 명령어를 하나씩 들고가서 처리한다. Static Data 영역에서는 전역 변수와 static 변수가 들어간다. 프로그램의 시작과 동시에 할당된다. Dynamic Data영역이 heap인데, 사용자가 동적할당한 데이터로 채워진다. 런타임에 크기가 결정된다. C에서 realloc()이나 Java의 new같은 명령어를 실행할 때 사용되는 공간이다. 동적 할당의 단점은 1. memory leak: malloc했는데 주소 까먹음..ㅠ 다른 malloc으로 포인터를 실수로 뒤집어 씌웠다. ..
Static Length 언어: COBOL, Java의 String Class 구현: compile-time descriptor Limited Dynamic Length 언어: C, C++ 특징: '\0'으로 끝을 표시함 구현: length를 위한 runtime descriptor가 필요할수도 있다 (C, C++은 해당 없음) Dymaic Length 언어: Perl, JS 구현: runtime descriptor가 필요하다. allocation/deallocation이 구현 문제중 가장 어려운 문제이다.
overloading: 이름만 같은 함수, 매개변수는 다르다 overriding: 완전히 같은 함수를 재작성 overloading은 함수 오버로딩, 생성자 오버로딩, 연산자 오버로딩 등 다양한 overloading이 있지만 연산자 오버로딩을 다뤄보려고 한다.. 원래의 +는 int나 float를 더하는 기능만 있다면 overloading을 통해서 행렬과 행렬을 더하는 기능으로도 확장할 수 있다. Matrix operator+(Matrix &another){ return Matrix(nums[0] + another.nums[0], nums[1] + another.nums[1], nums[2] + another.nums[2], nums[3] + another.nums[3]); } 전위증감과 후위증감... ht..
stringToInt = ord('a') # 97
WOL: 유선 랜으로 컴퓨터에 매직 패킷이라는 신호를 보내 컴퓨터를 원격으로 부팅해준다 팀뷰어랑 iptime에서도 wake on lan을 지원한다고 한다! WOL을 쓰려면 메인보드랑 공유기에서 모두 지원해줘야한다! 1) 바이오스 진입해서 wol 기능 켜주기 2) 랜카드에서 wol 켜기 - https://ca.ramel.be/117 3) 공유기에서 wol 켜기 - https://it.donga.com/32139/ 데스크탑에 유선랜이 아니라 무선랜이 연결되어있다면 크게 3가지 방법으로 해결해 볼 수 있다... 1) 유선랜 연결하기! 벽에다가 작업 해주기 2) wowlan 쓰기: 근데 이건 바이오스에서 지원을 해줘야하는데 내 컴은 안될것 같아서 패스 3) 라즈베리 파이를 wol 서버로 쓰기 : etherwak..