728x90
반응형

컴퓨터/C

총 80개의 포스트

컴퓨터/C(80)

  1. C언어 - switch 문과 지역변수 (중괄호의 필요성)

    서론 C언어 문법에서 switch문을 사용하여 코딩을 하는 경우 지역변수를 선언하여 사용하고 싶은데 원하지 않는 동작을 하는 경우가 종종 생기고는 합니다. 본문에서는 원인을 파악하고 효율적으로 코딩을 하는 방법을 알아보도록 합시다. 우선 비교해 봅시다. switch문을 사용해서 특정 case에서만 지역변수를 생성하고 사용하고 싶다고 가정해 보도록 합시다. 하나의 예제 코드를 보도록 합시다. #include int main() { //지역변수를 사용하지 못하는 코드 intnumber = 1; switch (number) { case 1: break; case 2: int a = 1; //Error 발생!! break; default: break; } //지역변수를 사용할 수 있는 코드 int number2..

    2022.04.01

    컴퓨터/C

    Commnet

  2. C 언어 - 비트연산

    비트를 연산하다. 컴퓨터에서 기본적으로 제공하는 단위는 보통 1바이트입니다. 메모리의 최소 단위가 1바이트로 이루어져 있기 때문입니다. 하지만 컴퓨터 공학을 배우면 정보의 가장 작은 단위는 1비트입니다 0과 1만이 존재합니다. 본문에서는 비트를 연산하는 방법에 대해 알아보도록 합시다. 비트연산의 장점 비트 연산을 할 수 있다면 작은 단위의 데이터를 조금 더 효율적으로 다룰 수 있게 됩니다. 또한 비트단위의 계산은 조금 더 빠른 속도를 제공합니다. 다만, 우리에게 익숙하지 않은 2진수의 개념을 익혀야만 쉽게 사용할 수 있습니다. 흔하게 사용되지는 않지만 작은 단위의 데이터 안에 효율적인 정보를 담기 위해 사용되고 있습니다. 비트 연산기호 비트 연산자 설명 & AND 연산 | OR 연산 ^ XOR 연산 Ri..

    2022.02.20

    컴퓨터/C

    Commnet

  3. C 언어 - CallBack함수(콜백함수)

    CallBack함수란 무엇인가? 인터넷을 통해 콜백 함수에 대해 찾아보면 다양한 말로 엄청나게 많은 설명이 있습니다. 피호 출자가 호출자에게 요청하는 함수.. 암시적 호출을 하는 함수.. 호출되는 함수.. 간단하게 콜백 함수라 불리는 녀석들은 C언어에서는 함수 포인터가 매개변수로 들어가는 함수를 콜백 함수라 일컫습니다. 그렇다면 왜 함수포인터를 매개변수로 사용하는가? 그럼 여러 글들에서 설명하는 것처럼 함수 포인터를 매개변수로 사용하는 함수를 왜 콜백 함수라는 이름을 만들어서 부르고 있는 건지 알 필요가 있습니다. 함수 포인터를 이용하면 똑같은 형식의 함수의 메모리 주소를 참조할 수 있게 됩니다. 그렇다면, 아래의 가정을 들어 예를 들어보도록 합시다. A라는 프로그래머가 sum이라는 함수를 만들었다. 이..

    2022.01.28

    컴퓨터/C

    Commnet 1

  4. C 언어 - 함수 포인터

    함수의 정의 또한 메모리에 저장된다. C언어를 배우면서 포인터를 배웠습니다. 다양한 변수들을 포인터를 통해 변수들이 저장된 메모리 주소로 접근하여 활용하게 되었습니다. 그렇다면, C언어를 통해 함수를 정의하면 정의된 함수는 어디에 저장되어 있을까요? 맞습니다. 정의된 함수 역시 메모리에 저장되게 됩니다. 그렇다는 것은 함수 또한 포인터를 통해 접근하고 이용할 수 있다는 것입니다. 본 포스트에서는 이 개념인 함수 포인터에 대해 알아보도록 하겠습니다. 함수가 정말로 메모리에 저장되는가 ? 간단하게 확인해 보도록 하기위에 예제 소스를 작성해 보도록 합시다. void func() { printf("함수도 메모리 주소가 있습니다."); } int main() { printf("%p\n", &func); retur..

    2022.01.28

    컴퓨터/C

    Commnet

  5. Visual Studio - Debug 와 Release (프로그램 배포)

    소스코드를 통한 빌드(컴파일) VisualStudio를 통해서 다양한 언어적 문법을 통해 소스코드를 작성해보았을 것입니다. 그리고 VisualStudio안에서 소스 코일을 컴파일하여 프로그램의 구동 또한 확인했을 것입니다. 이런 일련의 과정들을 빌드한다라고 하며, 빌드를 하게 되면 실제 프로그램 파일이 만들어지게 됩니다. 두 가지의 빌드 모드 Debug vs Release VisualStudio를 사용하게 되면 대표적인 2가지의 빌드 모드가 있습니다. 두 빌드 모드는 프로그램 파일이 만들어진다는 것은 똑같습니다. 하지만 목적이 다르고 그에 따른 특징이 존재합니다. 본 포스트에서는 이 차이를 알아보도록 하겠습니다. 빌드된 파일을 확인하는 방법 빌드된 프로그램 파일을 확인하는 방법은 여러 가지가 있습니다. ..

    2022.01.05

    컴퓨터/C

    Commnet

  6. C 언어 - scan 무한 반복 에러

    잘못된 입력으로 무한히 반복되는 에러 scanf를 사용하여 프로그래밍을 하다 보면 입력 스트림 버퍼에 남아있는 녀석들 때문에 예상치 못한 예외가 발생하곤 합니다. 특히 정수를 받기위해 scanf함수를 사용했는데 문자 등을 입력했을 때는 무한하게 소스코드가 반복되는 현상이 일어나곤 합니다. 예제 코드 #define _CRT_SECURE_NO_WARNINGS #include int main() { int input; while (1) { printf("1에서 10사이의 숫자를 입력하세요 :"); scanf("%d", &input); if (input 0) { printf("%d를 입력했습니다.\n",input); break; } else { printf("잘못된 값을 입력 했습니..

    2021.12.01

    컴퓨터/C

    Commnet

  7. C 언어 - 예외처리

    예외처리란? 프로그래머가 다양한 소스코드를 작성하여 프로그램을 만들다 보면 예상하지 못한 다양한 버그와 만나게 된다. 이때 발견된 버그들을 다시 발생하지 않도록 수정을 해야 된다. 이런 예상하지 못한 버그들의 발생을 방지 또는 없애기 위해 하는 행위들 예외처리라고 한다. 기본 예시 만약 아래와 같은 프로그램을 만들었다고 생각해 보도록 하자 원하는 음료를 선택하세요. 1. 콜라 2. 사이다 구매할 메뉴의 번호를 입력하세요 : 여기서 프로그래머의 의도된 선택지는 2개입니다. 이선 택지를 선택했을 때의 경우는 문제가 되지 않는다. 하지만 아래의 경우 어떠한 문제가 발생할지 모른다. 숫자 1 또는 2 이외의 숫자를 입력한다면? 숫자가 아닌 문자를 입력한다면? 이런식으로 다양한 프로그래머가 의도하지 않는 동작이 ..

    2021.11.30

    컴퓨터/C

    Commnet

  8. C 언어 - 버퍼와 scanf 함수 (다양한 에러의 원인과 해결법)

    scanf의 맹점 - 입력 버퍼와의 관계 C언어를 이용하여 다양한 프로그래밍을 하다 보면 아래와 같은 경우를 자주 만나게 됩니다. #define _CRT_SECURE_NO_WARNINGS #include int main() { int numinput; char charinput; scanf("%d", &numinput); printf("%d\n", numinput); scanf("%c" ,&charinput); printf("%c", charinput); //예상 결과는 ?? return 0; } 소스코드를 읽어와는 다른 결과가 나오면서 종료가 됩니다. 프로그래머는 2번의 입력과 2번의 출력을 만들려고 했지만 애석하게도 프로그램에서는 원하는 데로 동작을 하지 않습니다. 그렇다면 그 원인이 무엇일까요? s..

    2021.11.29

    컴퓨터/C

    Commnet

  9. C 언어 - 버퍼(Buffer)의 개념과 이해

    해당 포스트를 읽기 전 스트림에 대한 이해를 하고 읽기를 권장합니다. C 언어 - 스트림(Stream)의 개념과 이해 스트림(Stream)이란 무엇인가? Stream의 사전적인 의미는 흐르다, 흐름 등의 뜻으로 쓰입니다. 컴퓨터는 다양한 하드웨어와 소프트웨어가 합쳐져 있는 형태로 구성되어있습니다. 이런 다양한 장치 blog-of-gon.tistory.com 버퍼(Buffer)란? 버퍼(Buffer)의 사전적인 의미는 완충제 또는 완충제의 역할을 하는 것입니다. 컴퓨터 공학에서 불리는 버퍼 또한 장치와 장치 간의 데이터 전송을 할 때 완충작용을 하기 위한 임시 데이터 저장 공간입니다. 그림과 같이 입력스트림을 통해 키보드와 컴퓨터(CPU)가 연결되어 있다고 가정해 봅시다. 키보드라는 입력장치와 컴퓨터(CP..

    2021.11.24

    컴퓨터/C

    Commnet

  10. C 언어 - time.h

    C 언어와 시간 프로그래밍의 영역에서 시간의 개념은 상당히 중요합니다. 그리고 다양한 영역에서 사용됩니다. 본 포스트에서는 C언어에서 시간을 다루는 항목들을 제공해주는 time라이브러리를 알아보도록 하겠습니다. 자료형 time_t time.h에는 time_t의 자료형을 제공해줍니다. time_t 자료형은 시간을 편리하게 정의하기 위해 만든 자료형입니다. 시간을 출력하기 위한 time() 함수 time함수는 time_t자료형의 형태로 1970년 1월 1일 00시 00분(UTC)부터 지금까지의 초단위 시간을 출력합니다. 다음과 같은 소스코드를 작성한다면 1970년 1월 1일 00시 00분(UTC)부터의 지금까지의 초단위의 시간을 알아볼 수 있습니다. #include #include int main() { t..

    2021.10.02

    컴퓨터/C

    Commnet

G91개발일지

Gon91(지구일)

91년생 공학엔지니어의 개발일지

TODAY :

YESTER DAY :

TOTAL :

1 2 3 4 ··· 8
728x90
반응형