본문 바로가기

전체 글221

c언어 printf() 출력에 대하여 알아보기 c언어 printf() 출력에 대하여 알아보기 네 안녕하세요, 이번 포스팅에서는 c언어의 출력 함수인 printf()에 대하여 좀 더 자세히 알아보도록 하겠습니다. 우리는 지금까지 pritnf()로 항상 값을 출력을 해왔습니다. 그 이유는 printf()가 표준 출력 스트림이기 때문이죠. 그리고 이 printf()를 이용해서 매우 정밀하고 세밀하게 출력을 제어도 할 수 있습니다. 그래서 이번 포스팅에서는 그러한 것들을 좀 더 알아보고자 합니다. 그럼 시작하도록 하겠습니다. 1. 형식 제어 문자열 다들 아시다시피 printf()를 이용할 때 오는 가장 첫 번째 매개 변수인 format은 '형식 제어 문자열'이라고 알고 있을 겁니다. 그리고 여기에 들어가는 문자열 안에서 '%'로 지정을 해주는 문자를 '형식.. 2023. 2. 12.
c언어 스트림에 대하여 알아보기 c언어 스트림에 대하여 알아보기 네 안녕하세요, 이번 포스팅에서는 스트림에 대하여 알아보도록 하겠습니다. 스트림이란 쉽게 말하면 바이트들, 다시 말하면 데이터의 흐름을 이야기합니다. 프로그래밍 언어들은 여러 가지 방식으로 데이터를 주고받지만, c언어의 경우는 스트림으로 주고받습니다. 그럼 c언어가 쓰는 스트림은 어떤 것들이 있는지 한 번 알아보도록 하겠습니다. 1. c언어의 표준 입출력 스트림 표준 입출력 스트림은 개발자가 직접 입력을 하지 않아도 자동으로 생성이 되는 스트림을 이야기합니다. 대표적으로 이런 것들이 있습니다. 이름 스트림 연결 장치 stdin 표준 입력 스트림 키보드 stdout 표준 출력 스트림 모니터 화면 stderr 표준 오류 스트림 모니터 화면 이렇습니다. c언어의 경우는 scan.. 2023. 2. 11.
c언어 여러가지 포인터와 인수로 문제 풀기(프로그램 인수 사용하기, qsort() 함수 사용하기, 이분법으로 근 구하기) c언어 여러 가지 포인터와 인수로 문제 풀기(프로그램 인수 사용하기, qsort() 함수 사용하기, 이분법으로 근 구하기) 네 안녕하세요, 이번 포스팅에서는 이전 포스팅까지 배웠던 여러 가지 포인터들과 인수로 문제들을 풀어보는 시간을 가지려 합니다. 포인터와 인수는 정말 중요한 만큼, 잘 알아두셔야 합니다. 그럼 지금부터 시작하도록 하겠습니다. 1. 프로그램 인수 사용하기 제일 먼저 해볼 것은 프로그램의 인수를 사용하는 것입니다. 프로그램은 간단하게 마일을 킬로미터로 변환하는 것인데, 예전에는 scanf()를 이용해서 우리가 수를 입력해서 주소를 받는 원리로 했었죠? 이번에는 인수를 받아서 출력을 해볼 것입니다. 그럼 한 번 해보도록 하겠습니다. #include #include int main(int a.. 2023. 2. 11.
c언어 main 함수의 인수에 대하여 알아보기 c언어 main 함수의 인수에 대하여 알아보기 네 안녕하세요, 이번 포스팅에서는 main 함수의 인수에 대하여 알아보도록 하겠습니다. 우리가 정말 많이 사용하는 함수가 바로 main 함수이죠? 지금까지 우리는 항상 한 가지 인수만 사용을 했는데, 사실 main 함수 내에 넣을 수 있는 인수가 여러 가지 있습니다. 그래서 이번 포스팅에서는 그러한 것들을 알아보려 합니다. 그럼 지금부터 시작하도록 하겠습니다. 1. main 함수에 넣을 수 있는 인수 우리는 지금까지 void 인수만 넣었습니다. 이건 다시 말하면 '빈 값'이기 때문에 매개 변수를 전달을 받지 못합니다. 그리고 그렇게 값이 비었단 것을 의미하고, 그냥 main 함수 옆에 붙이는 괄호에 아무것도 쓰지 않으면 자동으로 void가 되기 때문에 굳이 .. 2023. 2. 10.
c언어 void 포인터에 대하여 알아보기 c언어 void 포인터에 대하여 알아보기 네 안녕하세요, 이번 포스팅에서는 void 포인터에 대하여 알아보도록 하겠습니다. 우리가 프로그래밍 언어를 사용할 때 항상 보면 무언가 값을 받죠? 하지만 간혹 그러지 않는 경우도 있습니다. 그럴 때 이 포인터를 쓰는데, 그래서 이 void 포인터가 무엇이며, 사용법은 어떻고, 어떤 기능을 하는지 알아보도록 하겠습니다. 1. void 포인터의 사용 방법 void 포인터는 받아야 하는 값이 구체적으로 정해져 있지 않은 경우에 씁니다. 하지만 이렇다고 하여 명시되어 있는 값만 없을 뿐, 순수 메모리의 주소는 가지고 있습니다. 이러한 포인터를 void 포인터라고 하며, 사용 방법은 이렇습니다. void *p; 선언 방법은 앞에 'void'만 붙이면 됩니다. 그렇지만 포.. 2023. 2. 10.
c언어 const 포인터와 volatile 포인터에 대하여 알아보기 c언어 const 포인터와 volatile 포인터에 대하여 알아보기 네 안녕하세요, 이번 포스팅에서는 const 포인터와 volatile 포인터에 대하여 알아보도록 하겠습니다. 이 둘은 특정한 상황에서 쓰이는 한정적 포인터들입니다. 그럼 이들을 어떻게 어떤 식으로 쓰는가 한 번 알아보도록 하겠습니다. 1 const 키워드 const는 다들 아시다시피 변수를 상수화 시킬 때 쓰는 키워드입니다. 그래서 우리가 변수를 상수화를 시키듯이, 값을 변경하지 않고 고정을 시켜야만 할 때 사용합니다. 사용 방법은 이렇습니다. const char *p; // 포인터 p가 가리키는 내용이 변하지 않음. char *const p; // 포인터 p가 변하지 않음. const 키워드를 포인터에 쓰는 방법이 크게 이렇게 두 가지.. 2023. 2. 9.
c언어 다차원 배열과 포인터에 대하여 알아보기 c언어 다차원 배열과 포인터에 대하여 알아보기 네 안녕하세요, 이번 포스팅에서는 다차원 배열 포인터에 대하여 알아보도록 하겠습니다. 우리가 배열을 쓰게 되면 1차원 배열만 쓰는 것이 아니라, 2차원 배열, 그리고 공학 계열의 알고리즘을 이용하여 인공지능을 학습을 시킬 때는 그 이상의 배열을 쓰기도 합니다. 하지만 데이터 사이언티스트나 고도의 딥러닝 등을 하지 않는 이상은 3차원 그 이상의 배열을 쓸 일은 거의 없으니 2차원 배열을 위주로 다룰 생각입니다. 그래서 2차원 이상의 배열에서 원소를 간접 참조를 할 때, 특히 2차원 배열에서 포인터를 어떻게 사용을 하는지 알아보도록 하겠습니다. 1. 2차원 배열과 포인터 우선 2차원 배열이 하나 있다고 가정을 해봅시다. 우리가 2차원 배열을 선언할 때는 이런 식.. 2023. 2. 8.
c언어 함수 포인터에 대하여 알아보기 c언어 함수 포인터에 대하여 알아보기 네 안녕하세요, 이번 포스팅에서는 함수 포인터에 대하여 알아보도록 하겠습니다. 제가 지금까지 썼던 포스팅에 있던 포인터들은 모두 변수들을 가리키는 포인터였습니다. 하지만 우리가 지금까지 배웠던 것들 중에 보면 함수도 직접 만들어서 쓰고 그랬었죠? 그러면 그것들에도 대응이 되어야 하는 것들이 있어야 합니다. 그래서 그러한 함수 포인터에 대하여, 그리고 어떻게 사용을 하는지 알아보도록 하겠습니다. 그럼 지금부터 시작하도록 하겠습니다. 2. 함수 포인터 함수 포인터란 말 그대로 함수를 가리키는 포인터 입니다. 함수 역시 실행이 시작이 되는 주소를 가지고 있어서 그 주소를 포인터에 넣어 지정을 할 수 있습니다. 그래서 그러한 주소를 이용하여 함수를 간접 참조할 수 있게 해주.. 2023. 2. 8.