전체 글 403

[C/C++] 메모리 영역, 변수-2 (정적변수/외부변수), 분할구현

메모리 영역 스택 영역 데이터 영역 특징: 프로그램 시작 시 생성 -> 프로그램 종료 시 해제 데이터 영역은 함수를 실행시켜서 저장되는 스택 영역과는 별개로 함수가 끝나도 계속 존재한다. 읽기 전용 (코드, ROM) 힙 영역 변수의 종류 지역변수 전역변수 사용되는 메모리 영역 : Data 영역 정적변수 (static) 사용되는 메모리 영역 : Data 영역 (전역변수와 동일) 정적변수는 함수 외부에 호출한 경우 어느 지역에서든 해당 변수를 사용할 수 있다는 점과 같이 전역변수와 매우 비슷한 성질을 갖는다. 전역 변수와 차이점 전역변수는 다른 cpp 파일에 같은 이름의 변수를 전역변수로 선언하여도 컴파일 단계에서는 문법적으로 문제없이 실행되지만 빌드 후 각각의 파일이 합쳐지는 링킹(Linking) 과정에서..

📚책읽기 2022.03.02

[C/C++] 함수, 재귀함수, 배열

함수 소스코드 내 중복되는 기능들을 함수로 구현해놓으면 코드가 간결화될 수 있다. 이러한 모듈화 작업은 추후 복잡한 프로그램을 제작할 때 더욱 수월한 구현의 기반이 된다. 프로그램 내에서 함수를 호출할 때에 함수의 소스코드 자체가 스택 메모리에 저장되는 것이 아니라 함수를 호출함으로써 초기화되고 변화되는 변수 값들이 메모리로 저장된다. 또한 같은 함수를 여러 번 호출하는 경우엔 스택 메모리 안에 함수가 할당받은 메모리 공간에서만 변수 데이터가 쌓이게 된다. 재귀(Recursive) 함수 장점 : 가독성이 높고, 구현이 용이하다. 단점 : 속도가 느리다 재귀함수는 반드시 탈출 조건이 있어야 한다. 탈출 조건이 없거나 작동하지 못한다면 stack overflow가 발생한다. 팩토리얼(Factorial)과 피..

📚책읽기 2022.02.17

[C/C++] 변수(지역변수/전역변수), Visual Studio 단축키(주석, 디버그)

변수 지역 변수 괄호 안에 선언된 변수로써 괄호 밖에서는 사라진다. 그러나 괄호 안에서는 괄호 밖에 있는 변수보다 높은 우선순위를 갖는다. int iName = 0; { int iName = 100; iName; // 100 } iName; // 0 전역 변수 괄호(함수) 밖에 위치하여 소스코드 내 어떤 지역에서나 사용 가능한 변수 전역 변수 0; // 전역변수 int Add(int left, int right){ global = left + right; } int main(){ Add(3,4); } 정적 변수 외부 변수 Visual Studio 주석 & 디버그 단축키 - 지정한 구문 주석 : Ctrl + k, c - 지정한 구문 주석 해제 : Ctrl + k, u - 원하는 영역만 드래그 : Alt +..

📚책읽기 2022.02.17

[프로그래머스/JAVA] 최대공약수와 최소공배수

대학교에서 자바 수업을 들을 때도 헷갈렸던 최대공약수와 최소공배수... 맨날 구글링하고 대충 넘어갔더니 알고리즘 문제로 출제되니까 효율적으로 코드를 짤 수가 없다..! 오늘 그래서 도장깨기 했다. 문제 설명 두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의 최대공약수는 3, 최소공배수는 12이므로 solution(3, 12)는 [3, 12]를 반환해야 합니다. 제한 사항 두 수는 1이상 1000000이하의 자연수입니다. 입출력 예 n m return 3 12 [3, 12] 2 5 [1, 10] 입출력 예 설명 입출력 예 #1 위의 설명과 같습니다. 입출..

[프로그래머스/JAVA] 콜라츠 추측

프로그래머스 연습문제 Level 1의 콜라츠 추측 문제를 풀다가.. 못 풀어서 검색했는데.. 지엔장......... 문제 설명 1937년 Collatz란 사람에 의해 제기된 이 추측은, 주어진 수가 1이 될 때까지 다음 작업을 반복하면, 모든 수를 1로 만들 수 있다는 추측입니다. 작업은 다음과 같습니다. 1-1. 입력된 수가 짝수라면 2로 나눕니다. 1-2. 입력된 수가 홀수라면 3을 곱하고 1을 더합니다. 2. 결과로 나온 수에 같은 작업을 1이 될 때까지 반복합니다. 예를 들어, 입력된 수가 6이라면 6→3→10→5→16→8→4→2→1 이 되어 총 8번 만에 1이 됩니다. 위 작업을 몇 번이나 반복해야 하는지 반환하는 함수, solution을 완성해 주세요. 단, 작업을 500번을 반복해도 1이 되..

[C/C++] 연산자, #define, 비트연산(Shift)

대입 연산자: = 산술 연산자 +, -, *, /, %(Modulus) % 는 '나머지 연산자'로써 피연산자가 모두 정수인 경우에만 사용 가능하다. int data = 10 % 3; // 10을 3으로 나눈 나머지 1 / 는 나누기 연산자로 정수와 실수 모두 사용 가능하다. int data = 10. / 3. ;​ 위와 같은 수식을 적용할 때 10을 3으로 나눈 실제 연산 결과는 3.3333..이지만 data 변수에 저장되는 값은 data의 자료형인 int에 따라 정수형으로 '형 변환'되어 3으로 저장된다. * 실수를 상수로 적을 경우 소수점 뒤에 f를 붙이면 float 자료형(10.f)으로, f를 붙이지 않으면 double 자료형(10.)으로 인식한다. 증감 연산자: ++, -- 증감 연산자는 변수의 ..

📚책읽기 2022.02.09

[C/C++] 자료형, 비트 표현, 2의 보수법

자료형의 종류 정수형 (크기 단위: byte) char(1), short(2), int(4), long(4), long long(8) 실수형 float(4), double(8) * 표현 가능한 수의 크기는 자료형의 Byte 크기에 따라 달라진다. 실수형 자료형 실수형 숫자의 비트 표현은 '부동소수점' 방식을 이용한다. 32bit = 부호비트(1) + 지수비트(8) + 가수비트(23) 정수표현 방식과 실수표현 방식은 체계가 아예 다르기 때문에 둘을 혼합하여 연산하는 것은 의도하는 경우가 아닌 이상 피하는 것이 좋다. int a = 4 + 4.0; 위 수식은 4.0의 실수형 값이 4인 정수형으로 '형변환'되어 연산되는 과정이 숨겨져 있다. 따라서 의도적으로 두 표현방식의 피연산자 연산이 필요한 경우엔 명시적..

📚책읽기 2022.02.08
728x90