본문 바로가기

프로그래밍/C언어17

C언어 공부하기 - 구조체(Structure) 구조체(Structure)는 서로 다른 형의 변수를 한데 묶어놓은 모음으로 생각할 수 있습니다. 예를 들어 회원 정보를 입력한다고 할 때 이름, 나이, 주소, 전화번호 등을 각각의 변수로 선언하여 취급할 수도 있지만 구조체를 사용하면 회원 정보를 독립된 형태의 변수처럼 다룰 수가 있습니다. 또 다른 예로 좌표평면의 점을 표시할 때도 구조체를 사용할 수 있습니다. 기본개념 다음과 같은 좌표평면의 점을 C언어로 코딩한다고 합시다. 구조체를 모른다면 다음과 같이 선언할 수 있습니다. int x; int y; 그런데, 점이 하나가 아니라 100개라고 하면 어떻게 할까요? 걍 단순히 생각하면 다음과 같이 하면 다음과 같이 쓸 수 있습니다. 각각 100개의 변수를 선언하는 겁니다. int x1, x2, x3, .... 2023. 6. 3.
C언어 공부하기 - 문자열 함수 구현하기 지난 시간에는 문자열과 배열에 대해서 알아봤습니다. 2020/10/28 - [프로그래밍/C언어] - C언어 공부하기 - 문자열과 배열 잠깐 리뷰를 해보면, 문자열은 문자들로 이루어진 널문자('\0', 값 0)로 끝나는 배열입니다. 문자형 배열, 문자형 포인터 2가지로 정의할 수 있는데, 전자는 배열이므로 변경이 가능하고 후자는 포인터이므로 변경이 불가능합니다. 마지막으로 문자열이 길이를 반환하는 함수 예제를 만들어 봤죠. 이번 시간에는 문자열 함수 몇 가지를 직접 구현해 보도록 하죠. (참고 : The C Programming Language 2nd E.) 다음과 같이 배열과 포인터로 문자열을 정의했다고 합시다. char arr_msg[] = "Hello World!"; char *ptr_msg = "H.. 2020. 11. 1.
C언어 공부하기 - 문자열과 배열 이번 시간에는 많이 쓰이는 문자열(Character Strings), 문자배열에 대해서 알아보겠습니다. 생각보다 간단한데요, 문자열이란 이름, 단어, 문장 등 문자들로 이루어진 배열입니다. 그리고 끝은 항상 널(Null)문자 즉 '\0'로 끝이 납니다. 널문자는 문자 '0'이 아니라 값이 0이므로 '\'뒤에 '0'을 붙여준 겁니다. 만약에 "Hello!"라는 문자열을 사용한다고 합시다. 그러면 아래와 같이 두가지 방법으로 정의를 할 수 있습니다. char hello_array[] = "Hello!"; char *hello_pointer = "Hello!"; 첫번째 정의는 크기를 지정하지 않은 문자형 배열에 "Hello!"를 지정한 겁니다. 두번째 정의는 hello_pointer라는 문자형 포인터가 "He.. 2020. 10. 28.
C언어 공부하기 - 배열과 포인터 지난 시간에 포인터의 개념에 대해 간단히 살펴 보았습니다. 살짝 정리해 보면,, 포인터는 메모리의 주소를 저장하는 변수입니다. C언어에서 포인터를 선언할 때는 일반 변수를 선언하듯이 하면 되는데 변수 앞에 기호 Asterisk 즉 "*"를 붙여 주면 되고, 기본 자료형(문자형, 정수형, 실수형 등)의 주소를 포인터 변수에 넣을 때는 기본 자료형 변수앞에 Ampersand 즉 "&"를 붙여서 포인터 변수에 저장하면 됩니다. 지난 시간에 길게 포스팅한 내용은 아래 소스로 정리할 수 있습니다. // 정수형 변수 선언 int ival = 3; // 정수형 변수를 가리키는 포인터 선언 int *iptr; // 정수형 변수의 주소를 포인터 변수에 assign iptr = &ival; // 결과 출력 printf (.. 2020. 10. 15.
C언어 공부하기 - 포인터를 알아보자 C언어를 공부할 때 많은 사람들이 다른 언어로 갈아타는 단계가 포인터에 대한 개념에서 입니다. 그만큼 내용 이해가 어렵지만 포인터를 빼놓고 C언어 프로그램을 작성하는 것은 모래위에 집을 짓는 것보다 더 위험한 것일 겁니다. 처음 듣는 어려운 개념을 가장 빠르게 배우는 방법은 무엇일까요? 당연히 자주 써보는 겁니다. 포인터를 이해하려고 개념을 책으로만 공부하다보면 이책 저책 같은 개념을 다른 방식으로 설명을 해 놓아서 더욱 더 미궁으로 빠지기 쉽습니다. 포인터도 마찬가지입니다. 일단 몇가지 개념을 공부한 다음에 코딩을 해보면서 당연하게 여기게 될때까지 하다보면 자연스럽게 이해가 됩니다. 포인터? 도대체 너 누구니? 포인터(Pointer)는 간단히 말해 메모리 주소(Memory Address)를 저장하는 변.. 2020. 10. 7.
C언어 공부하기 - 다차원 배열 다차원 배열(Multi-dimensional Array)은 배열의 배열(array of arrays)라고도 불립니다. 다차원 배열을 정의는 배열의 정의에서 본 것처럼 대괄호([배열의 크기])를 연속적으로 추가해주면 됩니다. C언어에서 배열의 차원 수의 제한이 있는 것 같지는 않지만 3차원배열 이상으로 정의하여 코딩을 하다보면 머리가 깨질 정도로 헷갈리고 실수할 가능성도 매우 높아집니다. 앞선 포스팅에서 어떤 반의 성적을 일차원 배열로 어떻게 사용하는 지 알아봤는데요, 만약에 반이 2개라면 2차원 배열로 다음과 같이 정의하고 초기화할 수 있습니다. 아래 예제는 두개의 반 성적을 2차원 배열로 정의하고 초기화 한 것입니다. score[2][5]를 간단하게 2행 5열인 행렬이라고 생각하면 쉽습니다. 앞의 [2.. 2020. 10. 6.