반응형

C언어 26

C언어 15. 메모리 동적 할당

이번 글에선 C언어에서의 메모리 동적 할당에 대해서 알아보도록 하겠습니다. 지금까지 우리는 메모리 공간을 확보할 때 변수나 배열을 선언하는 방법을 사용했습니다. 이러한 방법의 특징은 코드를 작성하는 단계에서 프로그래머가 확보할 메모리 공간의 크기를 미리 예상하고 작성해야 한다는 점입니다. 이를 메모리 정적 할당이라고 합니다. 메모리의 낭비 하지만 다음과 같은 경우가 있다면 어떻게 될까요? 만약 5개의 속담을 사용자로부터 입력받아 배열에 저장하는 프로그램이 있다고 생각해봅시다. 이를 위해선 배열을 다음과 같이 선언할 수 있을 것입니다. char pro[5][80]; 속담의 정확한 길이를 모르기 때문에 이를 저장할 배열의 길이는 충분히 길게 선언해야 합니다. 하지만 이러한 방식은 필연적으로 메모리 공간의 낭..

C언어 14. 포인터 배열, 다중 포인터

우리는 최근 글에서 포인터란 무엇인지, 포인터의 기본적인 사용법에 대해 알아보았습니다. 이번엔 그 포인터를 사용하는 방법을 좀 더 폭넓게 알아보도록 하겠습니다. 포인터 배열 먼저 포인터 배열이란 것에 대해서 알아봅시다. 배열이란 특정한 자료형을 연속된 기억공간에 저장하는 것이라고 이미 알고 계실 겁니다. 그렇다면 물론 포인터도 배열에 저장할 수 있을 것입니다. 이렇게 배열의 요소가 포인터인 것을 포인터 배열이라고 말합니다. char* ch_P[5]; 포인터 배열의 선언방법은 위와같으며, 배열의 요소가 포인터인것을 알려주기위해 *를 사용합니다. 포인터배열의 각 요소는 포인터이기 때문에 ch_P배열에 다음과 같이 값을 입력할 수 있을 것입니다. char* ch_P[5] = { "apple", "banana"..

C언어 13. 문자열

이번 글에선 문자열에 대해서 알아보겠습니다. 지금까지 저희는 printf를 사용해 문자열을 많이 출력해보았습니다. 하지만 반대로 문자열을 입력받고 저장한 적은 없습니다. 그렇다면 이 작업을 어떻게 해야 할까요? 문자열은 어떻게 저장하지? 그러려면 먼저 문자열에 대해 정확히 알고 넘어가야 할 것이 있습니다. 자료형에 대해 설명했을 때도 보셨겠지만, C언어에는 하나의 문자를 저장하는 char형은 있지만 문자열을 저장하는 자료형은 따로 존재하지 않습니다. 눈치채신 분들도 있을지 모르겠는데, 문자열은 char형의 배열에 저장하면 됩니다. 예를 들어 "seoul"이란 문자열은 크기가 6인 char형의 배열의 각 요소에 seoul을 넣은 것입니다. 그런데 왜 5글자인데 배열의 크기가 6이어야 하는 걸까요? 그건 바..

C언어 12. 배열과 포인터

저번 글에서 C언어의 가장 중요한 특징이라고 할 수 있는 포인터에 대해서 알아보았습니다. 이번엔 포인터와 이전에 알아보았던 배열의 관계에 대해서 알아보도록 하겠습니다. 먼저 기억을 한번 더듬어봅시다. 프로그램에서 배열의 모든 요소를 출력해야 한다면 어떻게 해야 할까요? 맞습니다. 반복문을 사용해서 모든 요소를 출력할 수 있죠. 하지만 이 작업을 한 번만 하는 것이 아닌 프로그램 전체에서 여러번 빈번하게 출력한다면 어떨까요? 이에 대한 함수를 새로 정의해서 사용하면 매우 간단하게 사용할 수 있겠죠. 배열을 함수의 인자로 그런데 한번 생각해봅시다. 이 배열을 어떻게 함수에게 인자로 넘겨줘야 할까요? 배열의 모든 요소를 각각 인자로 넘겨주면 이 문제를 해결할 수 있겠죠. #include void printAr..

C언어 11. 포인터

이번 글에서는 포인터에 대해서 알아보도록 하겠습니다. 포인터는 C언어의 가장 특징적인 부분이자 C언어가 지금까지 이토록 사랑받는 이유 중 하나입니다. 그만큼 C언어 내에서 포인터가 가지는 비중은 매우 큽니다. 이러한 강력한 무기인만큼 포인터를 제대로 이해하고 사용하기란 그리 쉽지 않습니다. 제가 C언어를 처음 배울 때에도 주위의 많은 사람들이 어려움을 호소했고, 저 또한 마찬가지였습니다. 하지만 그만큼 이를 제대로 익혔을 때의 활용도와 성취감은 이루 말할 수 없습니다. 그럼 이제 포인터에 대해서 설명해보도록 할 텐데, 아주 적절한 예가 있어서 인용해보겠습니다. 데이터의 실제주소는 어디일까? 서울아파트 103호에 길동이가 산다고 가정해보도록 합시다. (서울 아파트에는 길동이라는 사람은 단 한 명입니다.) ..

C언어 10. 배열

이번 글에선 C언어에서 사용하는 배열에 대해서 알아보도록 하겠습니다. 배열이란 무엇일까? 먼저 배열이란 특정한 자료형을 연속적으로 나열하는것을 이야기합니다. 여러분이 만약 숫자 5개를 저장하기위한 int형 변수를 선언하려면 어떻게 해야 할까요? #include int main() { int num1, num2, num3, num4, num5; return 0; } 겨우 변수 5개 이기 때문에 별로 어렵지는 않습니다. 하지만 이것이 숫자 500개라면 어떻게 할까요? 그런 때조차 이렇게 코드를 작성해야 한다면 굉장히 불편하고 귀찮을 것입니다. 이런 코드를 배열을 사용해 코딩하면 매우 쉽게 할 수 있습니다. 먼저 배열의 기본적인 선언 방법부터 알아보도록 하겠습니다. 자료형 배열명[배열크기]; 위와 같이 사용하..

C언어 9. 사용자 정의 함수

저번 글에서 보여드린 계산기 프로그램은 다들 만들어보셨나요? 아마 별 어려움 없이 만드실 수 있었을 거라고 생각됩니다. 이번 글에서는 사용자 정의 함수에 대해서 알아보도록 하겠습니다. 함수란 무엇일까? 그러기에 앞서서 먼저 함수라는 건 무엇일까요? 함수는 영어로 function이라고 하며 특정한 작업을 수행하기 위해 만들어진 코드들의 집합,즉 작은 프로그램이라고도 볼 수 있습니다. 사실 지금까지도 우리는 많은 함수를 사용해왔는데요, printf, scanf, for, if등등이 모두 C언어에서 미리 만들어놓은 함수입니다. 이들을 라이브러리 함수라고 부르며, 우리는 지금까지 그것을 가져와 사용한 것입니다. C언어에서 사용되는 표준 라이브러리 함수는 아래의 링크에서 확인하실 수 있습니다. https://ww..

C언어 8. 계산기 프로그램

이번 글에선 입출력, 조건문, 반복문을 사용한 간단한 계산기 프로그램을 만들어보도록 하겠습니다. 코드를 보고 따라하기 전에 자신이 먼저 만들어보는 것도 나쁘지 않으니 해보시길 바랍니다. #include int main() { char op, ex = 'n';//연산자 int num1, num2;//입력받을 숫자 printf("계산기 프로그램 시작\n"); while (ex == 'n') { printf("수식을 입력해주세요. : "); scanf("%d %c %d", &num1, &op, &num2); getchar(); if (op == '+') { printf("%d %c %d = %d", num1, op, num2, num1 + num2); } else if (op == '-') { printf("..

C언어 7. 반복문

저번 글에서는 조건문에 대해서 알아봤는데, 이번에는 반복문에 대해 알아보도록 하겠습니다. 반복문의 필요성 반복문은 조건문과 마찬가지로 프로그래밍 내에서 아주 중요한 역할을 합니다. 만약 여러분이 숫자를 5번 반복해서 출력해야 된다면 어떻게 해야 할까요? 간단히 생각하면 다음과 같이 할 수 있겠죠. #include int main() { printf("5 "); printf("5 "); printf("5 "); printf("5 "); printf("5 "); } 나쁘지 않은 방법이고, 이렇게 해도 충분히 해결할 수 있는 문제입니다. 그런데 숫자를 100번 출력해야 한다면 어떻게 할까요? 사실 이 정도까지는 복사 붙여넣기를 통해서 쉽게 해결할 수는 있습니다. 하지만 그것이 천 번, 만 번, 1억 번이 된다..

C언어 6. 조건문

이번 글에서는 C언어에서 사용하는 조건문에 대해서 알아보겠습니다. 조건문이란? 조건문은 프래그래머가 조건을 정해서 그에 맞게 코드를 실행시킬 수 있도록 해줍니다. 조건문은 프로그래밍에 있어서 절대로 빠지면 안 되는 요소인데, 왜냐면 조건문이 없다면 프로그램은 언제나 같은 결과만을 반복하게 되기 때문에 사용자의 조작에 따라 능동적으로 동작하는 프로그램을 만들 수 없기 때문이죠. 그러면 이런 중요한 조건문을 사용하는 방법에는 어떤 것들이 있을까요? C언어에서는 if문과 switch문 두 가지를 사용합니다. if문 먼저 if문부터 소개하겠습니다. if문의 기본적인 문법은 다음과 같습니다. if (조건) { 실행할 코드 } else { 실행할 코드 } 위에서 보시면 if뒤의 소괄호 안의 조건이 True이면 그 ..

반응형