본문 바로가기

프로그래밍39

C언어 공부하기 - 배열 일차원 배열 지금까지 C언어에서 변수를 선언하고 사용한 예제에서는 변수 하나당 하나의 값만 사용할 수 있었습니다. 예를 들어 학생 5명의 성적을 다루는 프로그램을 짜려면 아래와 같이 변수를 5개 사용해야 합니다. 그리고 선언한 변수의 이름을 일일이 기억을 하고 있다가 해당 학생에 맞는 변수에 성적을 대입시켜야 합니다. 점수를 영어로 score라고 하니까 순서대로 1부터 5까지 번호를 붙여서 처리하면 별 문제가 없어 보입니다. 그런데 score4를 보면 선언을 할 때 오타가 났네요. 뭐 오타가 나면 컴파일러가 잡아주니까 수정을 하면 됩니다. 그런데.... short int score1; short int score2; short int socre3; short int socer4; short int soc.. 2020. 10. 5.
C언어 공부하기 - 스토리지클래스와 프로그램구조 스토리지클래스 스토리지클래스(Storage Class)는 C언어에서 변수나 함수등의 생명주기와 변수가 어느 범위에서 사용될 수 있는지 그리고 메모리에 어떻게 저장이 되는지에 대한 것을 C언어의 지시어로 설정하는 것입니다. 뭐 이렇게 쓰고나니 초보자가 이해하기는 쉽지 않을 것 같군요. 다음과 같은 예를 들어볼께요. #include void func1(); void main() { int i = 10; /* 자동변수 (또는 지역변수) */ func1(); printf("i = %d\n", i); } void func1() { int i = 9; /* 자동변수 (또는 지역변수) */ printf("i = %d\n", i); } PS C:\CS> .\test.exe i = 9 i = 10 main()함수와 fu.. 2020. 8. 19.
C언어 공부하기 - 함수(2) 파라미터와 리턴값 이전 시간에 함수 파라미터에 정수형 값을 넘겨주는 함수의 예제를 잠깐 봤는데요, 이번 시간에는 함수의 파라미터로 정수 아닌 자료형을 넘기고 리턴하는 함수를 알아볼께요. 지난 시간 예제로 들었던 add_int함수는 정수형 값을 두개 받아서 더한 후에 정수형 값을 반환하는 함수였는데요, 만약 실수형 값을 넘기고 그 합을 리턴하는 함수를 작성하려면 다음과 같이 해야 합니다. float add_float(float num1, float num2) { return (num1 + num2); } add_int와 달라진 점은 함수이름이 _int가 아닌 _float로 바뀌었다는 것과 함수 파라미터와 리턴값이 자료형이 int에서 float로 변경된 것입니다. 함수의 파라미터와 리턴값의 자료형(Data .. 2020. 8. 10.
C언어 공부하기 - 함수(1) 함수는 C언어에서 많은 작업들을 세분하거나 반복적인 코드들를 묶어서 공통의 흐름으로 묶어 처리하는 단위입니다. C언어에서 함수의 사용은 함수가 다른 함수를 호출하는 방식으로 동작을하고 여러개의 함수들의 묶음으로 큰 프로그램을 만들게 됩니다. C언어에서 함수를 작성하고 사용하는 능력을 키워 초급개발자에서 중급, 고급 개발자로 한걸음 나아가도록 합시다. 이번 파트에서는 표준입출력함수와 같이 시스템에서 이미 만들어져 제공되는 함수에 관한 내용이 아니라 사용자가 필요에 따라 함수를 정의하고 사용하는 내용을 다룹니다. 전자를 시스템 라이브러리 함수라고 하고 후자를 사용자 정의 함수라고 하겠고, 별도의 언급이 없는 한 함수를 작성한다고 하면 사용자 정의 함수에 관한 내용으로 이해하시길 바랍니다. 함수의 기초 함수를.. 2020. 8. 8.
[C언어와 함께 자료구조를] 연결리스트로 큐 구현하기 큐 개념 다시 보기 큐는 줄, 대기행렬 이라는 의미가 있습니다. 줄서서 먹는 맛집은 온 순서대로 들어가게 되는 것과 같은 개념이라고 생각하시면 됩니다. 큐를 대표하는 말은 선입선출( FIFO : First In First Out)인데요, 거꾸로 생각하면 후입후출(LILO : Last In Last Out)도 틀린 말은 아닌 것 같습니다. 큐의 연산도 딱 두가지 put과 get입니다. 뭐 책에 따라서 enqueue, dequeue라는 말도 쓰이긴 하지만 의미만 통하면 별 문제는 없어 보입니다. put은 큐에 데이터를 넣는것, get은 큐에서 데이터를 가져오는 것입니다. 연결리스트로 큐 구현하기 배열을 이용한 큐에서는 큐의 크기가 정해져 있었지만, 연결리스트에서는 그런 제약조건이 없습니다. (이론상 컴이 더.. 2020. 7. 29.
[C언어와 함께 자료구조를] 연결리스트로 스택 구현 스택 개념 다시보기 스택(Stack)은 단어의 뜻에서 의미하듯 쌓아 놓는 구조로 매우 간단합니다. 예를 들면, 책 10권을 차례대로 쌓았다고 하면 책을 치우기 위해서 맨 위에서 부터 차례차례 치워나가는 방식이라고 할까요? 가장 나중에 쌓은 책이 먼저에 치워지니 LIFO(First-In Last-Out)이라고도 하고 가장 먼저 쌓은 책이 나중에 치워지니 FILO(First-In Last-Out)이라고도 부를 수 있겠네요. 스택을 조작하는 연산은 딱 두가지만 기억하자고 했는데. 스택에 집어넣는 연산 push와 스택에서 빼내는 연산 pop입니다. 연결리스트로 스택 구현하기 스택의 구현은 배열을 사용하던 연결리스트(Linked list)를 사용하던 상관없지만, 이전 포스팅에서는 연결리스트를 이용한 스택을 구현해.. 2020. 7. 29.