본문 바로가기

전체 글

(70)
[JAVA] 변수와 타입 2.1 변수 선언 컴퓨터 메모리(RAM)는 수많은 번지들로 구성된 데이터 저장 공간이다. 프로그램은 데이터를 메모리에 저장하고 읽는 작업을 빈번히 수행한다. 이때 데이터를 어디에, 어떤 방식으로 저장할지 정해져 있지 않다면 메모리 관리가 무천 어려워진다. 프로그래밍 언어는 이 문제를 해결하기 위해 변수를 사용한다. 변수는 하나의 값을 저장할 수 있는 메모리 번지에 붙여진 이름이다. 변수를 통해 프로그램은 메모리 번지에 값을 저장하고 읽을 수 있다. 변수 = 하나의 값을 저장할 수 있는 메모리 번지에 붙여진 이름 자바의 변수는 다양한 타입의 값을 저장할 수 있다. 즉, 정수형 변수에는 정수값만 저장할 수 있고, 실수형 변수에는 실수값만 저장할 수 있다. 변수를 사용하려면 변수 선언이 필요한데, 변수 선언은..
[JAVA] 코드 용어 이해 코드 용어 이해 Hello.java 소스 파일을 보면서 앞으로 소스 파일을 작성할 때 공통적으로 나오는 부분을 어떻게 부르는지 알아보자. 다음과 같은 코드를 패키지 선언이라고 부르며, 이는 소스 파일이 src/ch01/sec09 패키지에 있다는 뜻이다. 컴파일 후 생성되는 바이트 코드 파일도 bin/ch01/sec09 패키지에 생성된다. 이 글의 모든 예제 소스 파일에는 패키지 선언이 포함되어 있다. 앞으로 학습할 때는 코드 첫 째 줄의 패키지 선언을 따라 Package Explorer 뷰에서 패키지를 동일하게 생성하고 소스파일을 생성해야 한다. package ch01.sec09; public class Hello를 클래스 선언이라 부르며, Hello를 클래스명이라고 한다. 클래스명은 숫자로 시작할 수 ..
혼공C 도전실전 예제 내 풀이 p.292 #include void input_nums(int *lotto_nums); void print_nums(int *lotto_nums); int main(void) { int lotto_nums[6]; input_nums(lotto_nums); print_nums(lotto_nums); return 0; } void input_nums(int *lotto_nums) { int i; int j; for(i = 0; i < 6; i++) { printf("번호 입력 : "); scanf("%d", lotto_nums + i); for(j = 0; j < i; j++){ if(lotto_nums[j] == lotto_nums[i]) { printf("같은 번호가 있습니다!\n"); i--; } } ..
[C언어] 배열을 처리하는 함수 학습 목표 : 배열의 데이터를 처리하는 함수는 많은 양의 데이터를 효과적으로 공유하는 방법이 필요합니다. 이 절에서는 배열명을 인수로 받아 배열을 처리하는 함수에 대해 살펴봅니다. 배열과 포인터에 대해 배웠지만, 배열명을 꼭 포인터에 넣는 방식으로 배열을 처리할 필요는 없었습니다. 하지만 함수로 배열을 처리하려면 포인터가 필요합니다. ary배열에서 배열명 ary는 첫 번째 배열 요소의 주소 입니다. 이 주소 값을 함수의 인수로 주면, 함수는 이 값을 받아 주소 계산을 통해 모든 배열 요소를 사용할 수 있습니다. 이때 배열명을 받을 함수의 매개변수 자리에 포인터가 필요합니다. int ary[5] = { 10, 20, 30, 40, 50 }; 배열 요소를 출력하는 print_ary 함수를 만들었다면 다음과 ..
[C언어] 배열과 포인터 학습 목표 : 배열의 데이터를 자유롭게 다루기 위해서는 배열의 구현 원리를 이해할 필요가 있습니다. 이 절에서는 배열과 포인터의 관계를 밝히고 포인터로 배열을 사용하는 방법을 살펴보겠습니다. 배열은 자료형이 같은 변수를 메모리에 연속으로 할당합니다. 따라서 각 배열 요소는 일정한 간격으로 주소를 갖게 됩니다. 예를 들어 int ary[5]; 의 배열이 메모리 100번지부터 할당되고 int형 변수의 크기가 4바이트라면 각 배열 요소의 주소는 100, 104, 108, 112, 116번지가 됩니다. 결국 첫 번째 요소의 주소를 알면 나머지 요소의 주소도 쉽게 알 수 있고, 각 주소에 간접 참조 연산을 수행하면 모든 배열 요소를 사용할 수 있습니다. 따라서 컴파일러는 첫 번째 배열 요소의 주소를 쉽게 사용하도..
[C언어] 포인터 완전 정복하기 학습목표 : 포인터를 완전히 이해하지 못하면 C언어를 사용할 줄 안다고 할 수 없을 정도로 포인터는 매우 중요합니다. 한편 많은 사람들이 숨을 헐떡이며 넘어가는 구간이기도 합니다. 이 글을 통해 포인터의 필요성은 물론 포인터 필요성과 다양한 활용 방법을 알아보겠습니다. 포인터는 주소를 저장하는 일정한 크기의 메모리 공간입니다. 따라서 언제든지 다른 주소를 저장하거나 포인터끼리 대입할 수 있습니다. 그러나, 일반 변수와는 달리 대입 연산에 엄격한 기준이 적용됩니다. 이런 특징을 이해하는 것은 포인터를 더 잘 활용하는 데 도움을 줍니다. 주소와 포인터의 차이 주소는 변수에 할당된 메모리 저장 공간의 시작 주소 값 자체이고, 포인터는 그 값을 저장하는 또 다른 메모리 공간입니다. 따라서 특정 변수의 주소 값은..
[C언어] 포인터 학습 목표 : C언어는 메모리에 접근해서 우리가 원하는 방식으로 데이터를 사용할 수 있는 언어입니다. 지금까지 메모리에 접근하는 가장 쉬운 방법은 변수를 사용하는 거이었는데, 이 절에서는 메모리의 주소 값을 이용하는 '포인터'에 대해 알아보겠습니다. 지금까지 변수 선언으로 메모리에 공간을 확보하고, 그곳을 데이터를 넣고 꺼내 쓰는 공간으로 사용했습니다. 변수명은 그러한 메모리 공간을 식별할 수 있는 이름이었고요. 그러나 변수는 선언된 블록({}), 함수 내부로 사용이 제한되어 있습니다. 같은 변수명을 사용했다 하더라도 블록이나 함수가 다르면 별도의 저장 공간을 확보하므로 전혀 다른 변수로 사용되는 것이죠. 그래서 사용 버위를 벗어난 경우도 데이터를 공유할 수 있는 새 로운 방법인 포인터 개념을 이 장에서..
[C언어] 포인터 '포인터'는 메모리의 주소를 가지고 있는 변수이다. 컴퓨터에서 메모리는 바이트 단위로 주소가 매겨져 있다. 마을에 건물들이 가지고 있는 주소를 이용하여 원하는 집을 찾을 수 있는 것과 같이 컴퓨터 메모리도 주소로 접근할 수 있고, 주소를 이용하여 값을 저장하기도 하고, 값을 읽기도 한다. 우리가 변수를 만들 때, 변수는 어디에 만들어질까? 변수는 자료들을 정장하기 때문에 메모리에 만들어지는 것이 확실하다. 메모리의 각 바이트마다 고유한 주소가 매겨진다. 이 주소를 사용하여 우리는 메모리의 바이트에 접근할 수 있다. 만약 시스템이 20바이트의 메모리를 가지고 있다고 하자. 그럼 첫 번째 바이트 주소는 0, 두 번째 바이트 주소는 1, 마지막 바이트 주소는 19이다. 프로그램에서 변수를 만들면 이 변수는 컴..