공부 STUDY
[ C ] 포인터란? 메모리 주소 | 포인터 연산자( &, *)
C 언어는 메모리에 접근해서 원하는 방식으로 데이터를 사용할 수 있는 언어이다. 이것이 가능한 이유는 바로 '포인터' 덕분이다. 변수는 함수 내부로 사용이 제한되어 있다. 같은 변수명을 사용했다고 하더라도 블록이나 함수가 다르면 별도의 저장 공간을 확보하므로 아예 다른 변수로 사용된다. 사용 범위를 벗어난 경우도 데이터를 공유할 수 있도록 하는 포인터의 개념을 알아보자! 메모리 주소 메모리는 우리가 데이터를 넣고 꺼내 쓰는 공간이다. 그래서 그 위치를 식별할 수 있어야한다. 메모리의 위치는 주소값으로 식별할 수 있다. 주소값은 '바이트 단위'로 구분된다. 0부터 시작하고, 바이트 단위로 1씩 증가한다. int a = 10; 위와 같이 선언했다고 하자. 위 문장은 100번지부터 103번지 까지 4 바이트 ..
[ C ] 문자를 저장하는 배열 | char 형 배열 | 문자열 대입 방법 | strcpy(), gets(), puts()
단어는 보통 알파벳을 연속적으로 적고 그 순서에 따라 의미가 달라진다. 이런 단어를 컴퓨터 메모리에서 데이터로 처리하려면 순서에 맞게 연속적으로 저장해야하는데, 이때 사용하면 아-주 적합한 자료형이 바로 배열이다. 특히 알파벳 문자 같은 경우 한 바이트로 표현이 가능하므로, char형 배열을 사용하는 것이 적합하다! char 형 배열의 선언과 초기화 char형 배열을 선언할 때는 저장한 문자열의 길이보다 최소한 하나 이상 크게 선언해야한다. 예를들어 문자열 'apple'을 저장하려할때, 배열은 배열 요소의 개수가 최소한 6 개 이상이어야한다. 즉, 남는 공간이 하나 이상은 있어야 한다는 것! 왜일까? 널문자(\0) 때문이다. char str[100] = "applejam"; 초기화한 문자들은 배열의 처음..
[ C ] 배열 | 배열의 선언과 사용
동일한 자료형을 저장할 공간이 많이 필요하다면 일일이 변수를 선언하는 것은 쉽지 않다. 이때 사용하는 것이 '배열'이다. int kor, math, eng, sosial, science; //다섯 가지 변수가 있다고 생각해보자. 다섯 가지 과목의 점수를 저장하기 위해 변수 다섯 개를 선언했다고 가정하자. 따로따로 선언했으므로, 점수를 일일히 변수에 집어넣어줘야한다. 변수의 이름이 별도로 존재하니까... < 상당히 귀찮다 ㅋ 그래서 사용하는 것이 바로 '배열'! 같은 형태의 많은 데이터를 반복문으로 처리할 수 있도록 메모리에 연속적으로 저장해놓고, 이를 쪼개어 사용한다면 매우 효율적인 데이터 처리가 가능할 것이다. 배열을 선언해보자 배열 역시 선언을 통해 공간을 확보한다. 하나의 이름으로 한꺼번에 확보하면..
[ C ] 겨울방학동안 C 포인터/ 구조체/ 동적메모리 개념 확실하게 익히기 | 자료구조 학습전 갖추어야할 베이스지식
개강까지 한 달하고 조금 넘게 남았다. 다음 학기에는 자료구조를 수강하는데, 지난번 글에도 언급했지만 C언어 교수님께서 자료구조를 제대로 공부하기 위해 C 언어의 탄탄한 베이스가 중요하다고 하셨다. 특히 포인터! 만일 자신이 생각하기에 C언어에대한 지식이 부족하다고 느낀다면 방학을 활용해 확실하게 개념을 잡으라고 하셨다. 내가 개인적으로 존경하는 교수님이기도하고, 굉장히 명교수님이셔서 조언을 꼭 새겨들어야겠다고 다짐했었다. 그래서 다음 학기에 교수님께서 활용하시는 교재를 미리 공부하는 중인데, C 언어의 개념이 확실히 중요하다는게 와닿았다. (자료구조 언어를 C로 배움) 그래서 C언어의 주요 개념들을 확실하게 다시 공부해보려고 한다! 작년 초에 C 예습한다고 구매했던 '혼자 공부하는 C 언어'와 학교에서..
[리듬게임 만들기] 시작 화면에 음악 삽입하기 | JAVA 미니 프로젝트(3)
[리듬게임 만들기] 게임 시작 화면 개발하기 | JAVA 미니 프로젝트 (2) 동빈나님의 리듬게임 만들기 강의 영상 [리듬게임 만들기] 자바를 이용하여 리듬게임 만들기 프로젝트 | (1) 자바를 가볍게 2회독하고, 백준 문제도 풀어보기 시작했는데, 온전히 나의것이라는 changel.tistory.com 게임 시작 화면을 만든 뒤 시작 화면에 음악을 삽입하는 코드를 작성해 보았다.
[리듬게임 만들기] 게임 시작 화면 개발하기 | JAVA 미니 프로젝트 (2)
동빈나님의 리듬게임 만들기 강의 영상 [리듬게임 만들기] 자바를 이용하여 리듬게임 만들기 프로젝트 | (1) 자바를 가볍게 2회독하고, 백준 문제도 풀어보기 시작했는데, 온전히 나의것이라는 확신이 들지 않았다. 현재 교내 로보틱스 동아리에서 서버단을 맡았기에 당장 프로젝트에 투입되어야하는 상 changel.tistory.com 게임 시작 화면을 만들었다.
[리듬게임 만들기] 자바를 이용하여 리듬게임 만들기 프로젝트 | JAVA 미니 프로젝트 (1)
자바를 가볍게 2회독하고, 백준 문제도 풀어보기 시작했는데, 온전히 나의것이라는 확신이 들지 않았다. 현재 교내 로보틱스 동아리에서 서버단을 맡았기에 당장 프로젝트에 투입되어야하는 상황인데, 자바 개념이 잘 잡혀있지 않으니 김영한님의 스프링 로드맵 강의도 제대로 이해가 안 되는 것 같고 여러모로 불편함을 느끼었다. 그래서 스프링 강의는 잠시 멈추고! 자바를 확실하게 공부하고자 한다. 그래서 좀 전에 자바의 정석 책도 구매했다. 차근차근 여러 번 회독하면서 확실하게 익혀야겠다. 아무튼 지금까지 공부한 자바의 얕은 지식을 이용해 '동빈나'님의 리듬게임 만들기 프로젝트를 진행해보려한다. 만들어나가면서 새로운 개념도 배우고, 내가 배운걸 적용해보면서 자바를 이용한 창작물을 만드는 것이 목표이다. 동빈나님은 개인..
[JAVA] Assertions.assertThat 비교 하기
만약에 service에서 두 객체나 변수 등을 비교 하기 위해서는 다양한 방법이 있지만 결국 확인을 하기 위해서는 System.out.println 으로 보게 될것이다. 일반 코드도 그렇고 테스트 코드에서도 이렇게 작성을 한다면 직접 콘솔을 뒤져가면서 눈으로 확인을 해야한다. 이럴 경우에 비교를 하는 대상을 테스트 코드에 한줄만 추가해두면 된다. Assertions.assertThat("A").isEqualTo("Ad"); 이렇게 해두면 테스트 코드를 돌릴때 두개의 변수 혹은 객체 등 같으면 정상 success가 뜨고 다르다면 빨간색으로 fail이 날것이다. 위에 예제는 A랑 Ad는 다르니 fail이 뜨는 Test코드가 된다.
[JAVA] File 클래스 | RandomAccessFile 클래스에 대해 알아보자
말 그대로 파일이라는 개념을 추상화한 클래스이다. 파일에 대한 입력과 출력은 스트림을 사용하여 수행한다. 파일 클래스에 별도의 입출력 기능은 없지만, 파일 자체의 경로나 정보를 알 수 있고, 파일을 생성할 수도 있다. 주요 생성자 File(String pathname) pathname을 매개변수로 받아 파일 생성 메서드 boolean createNewFile() pathname으로 생성된 File 객체를 실제 파일로 생성 파일이 성공적으로 생성되면 true 반환 동일한 파일명의 파일이 있는 경우 false 반환 boolean isFile() 해당 파일이 정상적인 파일인 경우에 true 반환 boolean isDirectory() 해당 파일이 정상적인 폴더인 경우 true 반환 String getName(..
[JAVA] 직렬화 (Serialization ), 역직렬화 (Deserialization)
클래스의 인스턴스가 생성되면 인스턴스의 상태/ 인스턴스 변수 값은 마치 생명체처럼 계속 변하게 된다. 인스턴스의 어느 순간 상태를 그대로 저장하거나 네트워크를 통해 전송할 일이 있을 수 있다. 이것을 '직렬화' (Serialization)라고 한다. 그리고 저장된 내용이나 전송받은 내용을 다시 복원하는 것을 '역직렬화' (Deserialization)라고 한다. 다시 말해서 직렬화란 인스턴스의 내용을 연속 스트림으로 만드는 것이다. 스트림으로 만들어야 파일에 쓸 수 있고 네트워크로 전송할 수도 있다. 따라서 직렬화 과정에서 하는 일은 인스턴스 변수 값을 스트림으로 만드는 것이다. 자바에서는 이를 보조 스트림인 ObjectInputStream과 ObjectOutputStream을 사용하여 좀 더 쉽게 구현..