본문 바로가기

컴퓨터/언어,프로그래밍

[C언어] 포인터 - 선언, 사용 1. 포인터 1.1 포인터의 선언 포인터는 프로그램 메모리 주소를 가질 수 있는 변수 타입입니다. C언어에서 포인터를 선언할 때에는 원소 타입을 명시하고 포인터 변수를 지시하는 *를 명시하게 됩니다. 포맷: [type] *[변수명]; int *p_exam; /* 정수형 포인터형 번수 p_exam을 선언하였다. */ 여기서 p_exam은 메모리 주소를 갖을 수 있는 포인터 타입으로 해당 메모리 주소에 있는 원소를 int형으로판단하고 사용하겠다는 의미입니다. 실제 p_exam이 가지고 있는 메모리 주소에는 실제 정수형 변수가 있을 수도 있지만 다른 타입의 변수가 있거나 아무런 의미가 없는 주소일 수도 있습니다. p_exam을 적절한 주소를 대입하고 이를 관리하는 것은 모두 개발자의 책임으로 되어있고 이에 개.. 더보기
[C언어] 배열과 포인터 1 다양한 포인터와 배열 int *pa1[10]; /* 포인터 배열 */ int (*pa2)[10]; /* 배열 포인터 */ int **pp; /*다차원 포인터 */ void *vp; /* void 포인터 */ int (*fnCmp)(int ,int) /* 함수 포인터 */ 여기에서는 좀 더 다양한 포인터와 배열에 대해 살펴 보기로 합시다. 실제 사용하는 자세한 예는 동적 메모리 할당이나 프로그래밍 과정 및 프로젝트를 통해 소개될 것이며 여기에서는 기본적인 내용에 대한 소개를 하도록 하겠습니다. 그리고, 실제 여러분들이 주제를 정해 프로젝트를 해 나가는 경험을 통해 정확하게 이해하실 수 있을 것이라 생각됩니다. 여기에서는 이들에 대한 표현의 구분 및 기본적인 문법 사항을 점검하시길 바랍니다. 1.1 포인.. 더보기
[C언어] 포인터 - void *와 함수 포인터 (기본) 1.1 void 포인터 포인터 타입은 원소 타입이 무엇이든 상관없이 프로그램의 메모리 주소를 갖고 있다는 공통점을 갖고 있습니다. 그리고, 프로그램의 메모리 주소가 특정 타입은 어떠한 메모리 주소를 갖어야 한다는 규제는 없습니다. 결국, 포인터 타입의 원소 타입이 있는 것은 개발자가 사용하기 용이하게 하기 위해서 있는 것이지 그 이상의 의미는 없습니다. 이번에 배울 void 포인터의 경우는 원소 타입을 명시하지 않고 선언하고 사용할 때 어떠한 포인터 타입도 받아서 사용할 수 있게 해 주는 포인터로 일반화 과정과 직접적으로 관련이 있습니다. 일반화에 대한 자세한 내용은 프로그래밍 과정에서 상세히 다루도록 하고 여기서는 기본적인 것에 대한 언급만 하도록 하겠습니다. void foo() { int a = 2;.. 더보기
[C언어] 함수 - 함수 만들기 1 함수 만들기 이제 프로그래밍을 하기 위한 기본적인 단계로 간단한 함수를 만드는 작업에 대해서 익히도록 합시다. 프로그래밍을 할 때에는 크게 구도를 잡고 이를 쪼개고 다시 쪼개는 방법에 의한 top-down방식과 작은 부분에 대한 구현을 한 뒤에 이들을 조합을 해 나가는 방법에 의해 bottom – up 방식이 있습니다. 일반적으로 프로그램의 코드를 라이브러리를 사용하는 코드와 개발자 정의 코드로 구분을 한다면 개발자가 정의하는 코드에 대한 구현을 함에 있어서는 top-down방식을 사용을 하는 것이 추세이며 라이브러리를 사용하는 코드에 한해 부분적인 bottom-up방식을 사용하고 있습니다. 즉, 우리가 만드는 부분은 top-down방식이라고 생각을 하더라도 큰 무리는 없습니다.(물론, 프로그램을 설.. 더보기
[C언어] 함수 - 매개변수 전달하기 1.2 함수의 매개변수 함수의 정의를 특정한 기능을 하는 일련의 로직이라 할 수 있는데 해당 기능을 수행하는데 필요한 인수가 필요할 것입니다. 이러한 인수 중에 호출하는 함수에서 초기 값을 전달하는 것을 입력매개변수로 내부에서 임시적으로 사용할 것은 지역변수를 통해 처리를 합니다. 또한, 해당 함수가 수행하고 난 후에 호출한 함수로 전달할 결과값을 리턴을 통해 전달해 줍니다. int fnAdd(int first, int second) { int result =0; result = first + second; return result; } 예를 들어 위와 같이 두개의 수를 더하는 함수가 있다고 한다면 기능을 수행하기 위해 두개의 수를 입력받아야 하고 두 수를 더한 결과값을 되돌려 주어야 할 것입니다. in.. 더보기
[C언어] 함수의 흐름 1.1 함수의 흐름 C로 작성된 프로그램의 흐름은 어떠한 원리로 이루어지는지 흐름을 살펴보기로 합시다. C언어로 작성한 프로그램은 프로세서 초기화 작업이 진행된 후에 main함수에서부터 시작하게 됩니다. 그리고, 기본적으로 순차적으로 진행이 되는데 함수 호출 구문을 만났을 경우에는 호출된 함수를 수행하고 호출된 함수가 종료되면 호출한 함수의 호출구문 다음 구문부터 순차적으로 진행하게 됩니다. 다음의 예제와 그림을 통해 간략하게 프로그램의 흐름을 파악해 봅시다. /* 함수의 포맷을 정의하는 선언부 */ void fnA(); void fnB(); void fnC(); void fnD(); void fnE(); void fnF(); /* 프로그램 함수부 */ int main() { fnA(); /* 함수의 호.. 더보기
[C언어] 함수 - 정의 0 함수 프로그래밍이라는 것은 컴퓨터로 하여금 특정 기능들을 수행하도록 하는 일련의 과정을 말합니다. 여기에서 각각의 기능들이 실제 소스에서 함수로 구현하게 되는데 C언어로 작성된 프로그램에서 실제 컴퓨터가 수행하는 구문은 모두 함수내에 정의하게 됩니다. 이번 장에서는 먼저 함수에 대한 기본 문법사항과 함수를 만드는 과정, 그리고 해당 함수를 사용하는 방법에 대해 학습을 하기로 합시다. 1 함수의 정의 우리는 이미 많은 형태의 함수에 대해 알고 있습니다. 산수에서 블랙박스라든지 중고등학교의 수학에서 y = x+2, 혹은 f(x)= x+2 등 뿐만이 아니라 특정 재료를 넣고 어떤 상품을 만들기 위한 기계 등 많은 곳에서 함수의 모습을 찾아 볼 수가 있습니다. C언어에서는 다음과 같은 포맷으로 함수를 정의를.. 더보기
프로그래밍 단계 1. 프로그래밍 과정 여기서는 프로그래밍 과정을 기초 설계(요구 분석 및 job분배, 스케쥴), 상세 설계 및 구현, 종료 보고 과정을 통해 하나의 프로그래밍을 완성시켜 나가는 과정에 대해 소개하도록 하겠습니다. 이와 같은 개발 공정은 절차식 프로그래밍에서는 적합할 수 있으나 OOP개발 방법과는 다릅니다. 하지만, 이번 장을 통해 여러분들이 설계의 중요성을 깨달을 수 있다면 이후 OOP설계 방법을 익히는 데에도 도움이 될 것이라 확신합니다. 이번 장에서는 이제까지 설명된 기본적인 내용을 토대로 회원 관리 프로그램을 동적 인덱스 배열로 작성할 것이며 다음 장 프로젝트에서는 다양한 형태의 프로그래밍을 예를 소개할 것입니다. 이번 장에서는 전체적인 공정과 각 단계에서 하는 롤에 대한 이해를 해 나가시기 바랍니.. 더보기