no image
[C] 함수
Call by value : 인자가 값인 함수 Call by reference : 인자가 포인터인 함수 함수 설계 원칙 인수의 유효성 검사는 피호출자 함수에서 구현 호출자가 검사를 하게 되면 호출마다 검사 로직을 구현해야 함 -> 피호출자 함수에서 구현하면 한번만 구현하면 됨 UI와 기능은 구별 팩토리얼 구할 때 main 함수와 factorial 함수가 있다면, main에서 입력값(문자열 출력: 숫자를 입력하세요) 받아서 factorial 함수에 전달 factorial 함수는 유효성을 검사하고 수행한 값을 반환 main에서는 유효성 검사 시 잘못된 값에 대한 오류 출력 또는 수행된 값을 출력 중복되는 코드는 함수화 -> DRY(do not repeat yourself) 원칙 ※ 실용주의 프로그래머
2024.01.03
no image
[C] 배열
바이트 순서 컴퓨터 메모리에 바이트가 저장되는 순서 상위, 하위 바이트 0x01234567 01이 상위 바이트, 67이 하위 바이트 빅 엔디안 낮은 주소에 상위 바이트 네트워크가 빅 엔디안 사용 리틀 엔디안 낮은 주소에 하위 바이트 윈도가 리틀 엔디안 사용 배열 ※ 참조자&은 c++ 문법 Lookup Table if, switch 문은 선택지가 늘어날수록 코드도 길어지고 성능 저하도 일어남 이를 lookup table을 사용하면 하나의 인덱스를 기준으로 수행하기 때문에 아무리 선택지가 늘어도 성능 저하가 일어나지 않음 다차원 배열 char aList[3][7] = { "Hello", "World", "String" }; char (*paList)[7] = aList; -> paList는 포인터 변수이고,..
2024.01.02
no image
[C++] C와 C++ 차이
과거에는 메모리 사용을 잘못하면 플랫폼에 문제가 발생 -> 이를 해결하기 위해 링 시스템(유저모드와 커널모드)과 가상메모리가 등장 -> 유저모드 단계에서 문제가 생겨도 플랫폼에 영향이 가지 않음C : 사용자가 스스로 물건을 잘 써야함C++ : 사용자의 이해도가 상대적으로 부족해도 되지만 물건을 잘 만들어야 함비용 : C 성능 : C > C++유지보수 : C > C++입출력std는 namespace, ::은 범위 지정 연산자,  cout은 출력을 담당하는 객체(cin은 입력), cout객체에게 출력을 맡김char name[10];std::cout > name;자료형long long : 64비트 정수char16_t : 16비트 문자char32_t : 32비트 문자auto : 컴파일러가 초깃값의 형식에 맞춰 ..
2023.12.28
no image
[C] 표준 입출력 도구
입출력은 kernel이 수행 파일은 입출력 Buffer가 존재 Win7 이상부터 ASLR(Address Space Layout Randomization)을 지원 -> 실행할때마다 메모리 주소를 바꿔서 해킹 방지 Debugging F9 : breakpoint 설정 F5 : 디버그 모드로 실행 Alt + 6 : 메모리 창 확인 F11 : 한줄씩 실행
2023.12.26
no image
[C] 자료형
자료형 : 일정 크기의 메모리에 저장된 정보를 해석하는 방법 변수 : 아직 확정되지 않은 수(C에서는 메모리 주소) Buffer : 연산을 위한 임시 메모리(ex. 그릇) int a; -> 선언 a = 10; -> 정의 int a = 10; -> 선언 및 정의 ※ 실수형을 사용할 때는 double을 사용! -> float는 부동소수점 때문에 오차가 큼 ※ 문자열은 마지막에 null 값을 고려해야 함
2023.12.26
no image
[C] C기본
https://www.youtube.com/watch?v=I5jmg6uUTbQ&list=PLXvgR_grOs1AQuQ-5mWbx0zdG0betdeoL&index=1 컴파일 : 인간이 이해할 수 있는 언어로 작성된 코드를 기계어로 변환하는 작업 전처리 과정 -> 컴파일 과정 -> 어셈블리 과정 -> 링킹 과정 1. 전처리 과정 : 소스 코드 파일(*.c)을 전처리된 소스 코드 파일로 변환(*.i), 주석 제거, 헤더 파일 삽입, 매크로 치환 및 적용 ※ 전처리기 : 컴파일하기 전에 프로그램에 대한 일련의 작업을 수행하는 것, 기계어 코드를 생성하지 않으며 소스 코드를 컴파일하기 좋게 가공 2. 컴파일 과정 : 전처리된 소스 코드 파일을 어셈블리어 파일(*.s)로 변환, 문법 검사, 정적 영역들의 메모리 할..
2023.12.21