본문 바로가기

반응형

Programming

(171)
배열 선언, 복사 자바에서의 배열 선언은 C와는 조금 다르다. C에서는 int num[10]; int num2[]={1,2,3}; 이런식으로 하였다면 자바는 int[] num = new int[10]; int[] num2 = new int[]{1,2,3}; int[] num3 = {1,2,3}; 이렇게 3가지 방법이 있다. 2,3 번째는 초기화를 같이 해주는 것이다. 자바와 C의 배열의 다른점은 자바에서는 배열을 만들고 메모리를 할당해 줘야 한다는건데 int, float등 기본 데이터형은 자동으로 메모리가 할당되지만 객체인 경우는 그렇지 않다. 그래서 직접 할당을 해줘야 한다. 안그러면 NULL값이 있게 된다. Person[] yoon = new Peson[10]; 이렇게 한다고 배열에 메모리가 할당되지 않는다. 값을 출..
퀵정렬(quick sort) QuickSort 의 시작은 임의의 수를 pivot 이라고 정하면서 시작된다. int data[] = {6, 9, 14, 4, 7, 3, 1, 10}; 이런 값들의 List 가 있을경우 6을 pivot을 정한다고 가정하면 j가 [1]~[7] 으로 움직인다고 하자 그리고 i=0 으로 초기화 되어있다. 그럼 j는 1부터 커지면서 pivot 인 6보다 작은 수가 있는지 찾는다. 만약 작은 수가 있는 j를 발견하면 ++i 와 j를 바꾼다. data[++i] 와 data[j] 를 바꾸는 것이다. 그럼 처음으로 바뀌는 번호가 4와 9가 된다. j는 3 이고 i는 ++i가 되어서 1인 경우이다. 이렇게 반복해서 [7]까지 가면 pivot, pivot > x, pivot < x 이와 같은 순서로 놓이게 된다. 그럼 p..
오버로딩(overloading) 와 오버라이딩(overriding) 이건 자바에만 해당되는 개념이 아니다. 거의 모든 객체지향 언어에서 사용되는 개념일 것이다. 오버로딩(overloading) - 메소드 이름이 같고 매개변수의 수나 타입이 틀린것이다. int sum(int a, int b); int sum(float a, float b); 이런것이다. 컴파일시 매개변수의 갯수와 데이터타입에 따라서 함수명을 바꿔준다고 한다. 자바에만 해당되지는 않을 것이다. 오버라이딩(overriding) - 상속에서 부모클래스의 메소드를 하위메소드에서 재정의 하는것이다. class Father { void sayName() { System.out.print("My name is brown"); } } class Son extend father { void sayName() { Syste..
[C] 함수와 배열 그리고 포인터 - 1부 배열을 사용하다가 함수에 넣을때가 있다. 이부분에서 부터 문제가 생긴다. 도대체 어쩌란 말인가~~~ int ABC = {1,2,3}; printf("sum : %d\n",sum(ABC)); 이게 원하는 코드이다. 함수부분을 보면 다음과 같이 사용하면 된다. int sum(int data[]) 또는 int sum(int *data) 이렇게 하면 된다. 물론 차이는 있다. data[] 이렇게 쓰면 값복사를 하는것이다. 함수안에서 data라는 배열이 새로 생기는 것이다. *data 포인터로 사용하면 배열의 주소만 넘겨 받는다. 그러므로 함수안에서 배열의 값을 변경할수 있다. 여기까지는 간단하게 1차원 배열을 넘기는 방법을 설명한거고 2차원 배열을 넘기는 방법은 조금더 복잡하다. int sum(int dataA..
클래스 기초 클래스 = 구조체 + 함수 클래스를 간단하게 말하자면 저렇게도 말할수있지 않을까 한다. 클래스는 객체이고 객체지향이며 생성자, 소멸자를 포함하고 있으...... 물론 그렇지만 간단하게 얘기하자면 저렇다는 것이다. 클래스에는 구조체처럼 여러타입의 여러개의 변수를 클래스라는 범위안에 넣을수 있다. 그리고 그안에 있는 변수를 자유롭게 접근할수 있는 클래스안의 함수를 매소드(method)라고 한다. public class Dog{ public int age; public int getAge(){ return age; } } 위는 아주 간단한 클래스이다. Dog 라는 이름의 클래스이며 int형의 age라는 변수가 있으며 getAge() 라는 메소드가 포함되어있다. getAge는 단순히 age를 리턴하는 메소드이다..
Visual Studio 2005 or 2008 에서 C의 사용법 기본 사용법은 C++ 사용법과 같다. 틀린점이라면 소스파일의 확장자를 cpp가 아닌 c로 하는것이다. 혹시나 해서 확장자를 cpp, c 두가지를 같은 소스로 테스트해보았습니다. [테스트 소스] #include struct Person{ int height; int weight; }; int main(){ Person a; return 1; } [확장자 cpp의 빌드 결과] [확장자 c의 빌드 결과] 오류의 원인은 C에서는 구조체를 사용할때 struct Person a; 라는 방법으로 사용해야하며 cpp 는 Person a; 라고 사용한다. [수정후 확장자 c의 빌드 결과] 결론은 확장자에 따라서 C로 컴파일되고 C++로 컴파일된다는 것이다.
데이터 타입 ※ 기본 데이터 타입 정수형 실수형 불형 1 byte byte boolean 2 byte short, char 4 byte int float 8 byte long double ※ 애매할수 있는 데이터를 표현하는 방법 10 : int 10L, 10l : long 3.14 : double 3.14F, 3.14f : float 3.14D, 3.14d : double 'A' : char "ABC" : String 0xA : 16진수 (앞에 0x 를 붙인다) 0123 : 8진수 (앞에 0을 붙인다)
콘솔에서 잠시 멈추기 비주얼스튜디오6 에서는 실행하고 나서 끝날때 잠시 멈추는거 같았는데... 비주얼스튜디오2005 에서는 그런게 없어진거 같다; 그냥 바로 창이 닫혀버린다;; 그래서 찾아본 결과 이런 방법이 있었다; #include 이건 필히 추가해놓아야 한다 system("pause"); 이부분이 잠시 멈추는 부분이다; 위에 나온걸 이용하게 되면 다음과 같은 글이 나오면서 잠시 멈추게 된다 "계속하려면 아무키나 누르세요...."

반응형