Algorithms/C, C++ 6

C++ 자주 쓰이는 기능 요약

복습한다는 개념으로 볼 수 있게 필요한 개념을 정리하였습니다. Integer Types char short int int long int long long int Pointers 변수 이름은 특정 데이터 타입을 가진 주소로 가기 위한 인덱스로 사용됩니다. 포인터는 값을 직접 가지지는 않으나 값을 지칭합니다. 또한, 포인터는 strongly typed 로서 컴파일러가 포인터를 int, char 등의 자료형과 연관시킵니다. 임베디드 개발 시 struct data를 넘겨줄 때 데이터 전체를 넘기기에 부담이 되니 포인터를 넘겨주는 작업을 자주 하곤 합니다. #include int main() { int y = 42; int *ip = &y; printf("The value of y is %d\n", y); pr..

Algorithms/C, C++ 2021.01.06

Function

자주 쓰는 기능이 있다면 함수로 만들어 모듈화를 해야 한다. 이 것이 간결하고 유지보수가 쉬운 프로그램을 만들기 위한 가장 첫 번째 단계이다. 함수를 만든다는 것은 여러 명령들의 집합을 만들어 묶는 것과 같다. 수학에서의 함수를 생각하면 쉽다. 아래와 같이 함수에 인풋을 전달하면 정해놓은 지시대로 인풋의 데이터를 처리해 아웃풋을 낸다. Input -----(함수 안에 프로그래머가 정의한 지시들) ----> Ouput 나중에 나아가서 프로그램을 짜는 것에 능숙해진다는 것은, 함수와 클래스를 어떻게 짤 것인지, 즉 아키텍쳐를 빨리 생각해내는 능력이라고 한다. 그 단계까지 최대한 빨리 갈 수 있도록 얼른 공부해야겠다! 주의할 것들 함수는 단 하나의 기능을 수행하도록 하는 것이 좋다. 함수를 호출하면 CPU 사..

Algorithms/C, C++ 2019.10.13

Overflow / Underflow

조금 더 자세히 들어가 왜 타입 캐스팅을 잘못하면 오버플로우가 나는지에 대해 알아보도록 한다. 먼저, 이진법에서 음수를 어떻게 활용하는지를 파악하는 것이 중요하다. 2진법에서는 음수를 표현하기 위해 '보수' (complement)의 개념을 활용한다. Most Significant Bit (가장 왼쪽에 있는 비트)가 부호를 나타내기 위한 비트이다. 5 00000101 Signed Magnitude 10000101 +0 과 -0 존재 10000000 00000000 1's Complement 1의 보수 11111010 +0과 -0 존재 11111111 00000000 2's Complement 2의 보수 11111011 Unique Value of 0 2의 보수의 표현범위는 다음과 같다 8비트 : -128 ..

Algorithms/C, C++ 2019.10.09

Type Casting (형변환)

형변환은 (type_name) expression 으로 가능하다. 예를 들어 원의 체적을 구하는 식을 계산하려 할 때 (int) 4/3 * PI * r * r * r 에서는 (int)가 type_name 이고 나머지가 expression 이다. 위 그림은 형 변환을 할 때의 서열이라고 생각하면 된다. int형과 float형을 계산한다면 float 형으로 결과가 저장되는 방식이다. float 나 double 에서 int 형으로 변환 할 때에는 소수점 밑 숫자들이 모두 내림처리된다. (반올림되지 않음) 예제를 보며 이해하는 편이 빠르다. 여담이지만 scanf 함수 쓸 때, 두 번째 parameter에 &를 넣지 않는 실수를 자주 한다. 그러고서 형변환 에 문제가 있나?? 하고 한참 삽질하기 전에 꼭 확인해야..

Algorithms/C, C++ 2019.10.05

#문법 - 전처리기

파일 내의 소스코드를 통째로 붙여 넣는 대신에 간결하게 라이브러리를 불러오는 방식으로 프로그램을 구성할 수 있습니다. 두 가지 방법이 있는데요, #include 시스템 디렉터리에서 파일 검색. 운영체제마다 시스템 디렉터리가 존재하는 경로가 다릅니다. #include "파일 이름" 현재 폴더에서 파일 검색. 현재 폴더에 파일이 없다면 시스템 디렉터리에서 검색 stdio.h 와 같은 헤더 말고도 우리가 직접 헤더를 만드는 방법도 있어요. 앞으로 프로그램을 짤 때 훨씬 간소하게 프로그램이 보여질 수 있게 해줍니다 테스트 해보기 위해 헤더파일에 함수를 하나 입력합니다. 이후 main.c 파일에서는 이런 식으로 코딩을 해주면 #define _CRT_SECURE_NO_WARNINGS #include #include..

Algorithms/C, C++ 2019.08.19

#오류 - 쓰기용으로 열 수 없습니다

오랜만에 파일입출력에 대해 다시 감을 익히려고 열심히 fopen 에 대해 쓰던 중 LNK1168 에러인 "쓰기용으로 열 수 없습니다" 가 계속 떠서 아! 이미 프로그램 실행중인가! 닫고 다시 빌드해서 돌려봐야지, 하고 작업관리자를 켰는데 프로그램이 어디에 있는지 전혀 찾을수가 없는겁니다 ㅜㅜ. 이거 때문에 컴파일도 안되고 투덜대는 동안 "아 이런 실수 하나하나 기록해놨다가 학기중에도 과제할때 써먹어야겠다" 해서 티스토리에 블로그를 만들게 되었습니다. 작업관리자에는 파일입출력.exe 가 전혀 없는 걸 거듭 확인한 후 고통스러워하다 cmd를 통해 실행중인 프로세스를 확인해봅니다. 이후 태스크를 죽입니다. 명령어는 taskkill /f /im 0000.exe

Algorithms/C, C++ 2019.08.19