본문 바로가기

전체 글

(68)
혼공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이다. 프로그램에서 변수를 만들면 이 변수는 컴..
[07.01] 입출력과 사칙연산 2577 #include int main(void){ printf("Hello World!"); return 0; } 1000 #include int main(void) { int a, b; scanf("%d %d", &a, &b); printf("%d", a+b); } 1001 #include int main(void) { int a, b; scanf("%d %d", &a, &b); printf("%d", a-b); } 10998 #include int main(void) { int a, b; scanf("%d %d", &a, &b); printf("%d", a*b); } 1008 #include int main(void) { int a, b; scanf("%d %d", &a, &b); printf("..
나공탐 제작 5일차 (23.6.10) 5일차 진행 상황(2023. 6. 10) 학습 공간, 나공탐 정보 구현 완료 - details를 이용하여 거의 구현하였음... - 쉬운 태그들만 사용해서 만들었음. 새롭게 알게 된 점 - 문제점 - 나의 정보 항목은 삭제 하였다. 과제 제출 시간이 얼마 남지 않은 것도 맞지만 지금 내 수준에서 로그인 회원가입 창을 만들고, 그 데이터를 저장해두기 위한 것들을 코드로 짜려면 단순히 인터넷에서 긁어오는 것 밖에 안 될 것 같아서 이 기능은 나중에 기회가 되면 다시 도전해 보고 싶다. 느낀 점 어쨌든 완성!! 조금... 퀄리티가 떨어지지만 그래도 어찌됐든 나의 아이디어를 실현시켰다!! ㅎㅎ 사실 너무 단순하고, 이 블로그 이름처럼 무식하게 코드를 작성한 거라... 마지막 내 정보 쓸 때 개발자라고 하기 굉장히..