본문 바로가기

분류 전체보기82

[C] 변수(지역 변수, 전역 변수, 정적 변수, 외부 변수) [C] 변수 (지역 변수, 전역 변수, 정적 변수, 외부 변수) 목차 변수의 종류 1. 지역 변수 2. 전역 변수 3. 정적 변수 4. 외부 변수 메모리 영역 1. 스택 영역 2. 데이터 영역 3. 읽기 전용(코드, ROM) 4. 힙 영역 1. 지역 변수 지역 변수는 스택 영역에 선언돼서 함수가 끝나면 사라진다. #include // 전역변수 int i=0; // Data 영역 int main() { // 지역변수 return 0; } int iName =0; //괄호 안에 선언된 변수(함수, 지역) { int iName = 100; iName; // 괄호 지역 안에 선언했던 iName } iName = 100; // 바깥쪽에 선언했던 iName // 지역과 지역 안에 또 지역을 만들 수 있다. // 괄.. 2022. 1. 2.
[C] 분할 구현 [C] 분할 구현 헤더랑 파일을 분리하는 이유 -관리가 편하고 재사용이 편하다. 그렇다면 헤더파일에 함수까지 다 구현해두면 될텐데 왜 굳이 그렇지 않을까?(헤더에는 함수 선언만 해둔다) 나누어서 구현할거면 전역변수는? 1. 헤더파일에 전역변수를 선언해두고 다른 cpp파일이 #include로 받아서 쓰면 되지 않을까? -> 틀렸다. #include는 단순한 복붙이다. 각자의 cpp파일에서는 문제가 일어나지 않겠지만 모든 cpp파일을 합쳤을때 변수명이 다 겹쳐 어느 것을 말하는지 알 수 없다. 파일마다 헤더파일에 있는 전역 변수 이름이 각각 생길 뿐이다. 여러 번 정의된 기호가 있다는 링크 단계(LNK) 의 오류가 발생한다. 2. 우리가 원하는 것(전역변수)을 하기 위해서는 정적 변수(static)와 외부 .. 2022. 1. 2.
[C] 배열 [C] 배열 배열의 특징 1. 배열은 메모리가 연속적인 구조이다. 2. 배열의 이름은 배열의 시작 주소이다. 특정 요소에 접근하고자 할 때 인덱스를 통해 접근한다. int iArray [10] = { }; 위 코드는 int 자료형 10묶음인 iArray를 0으로 초기화해서 만들겠다는 뜻이다. 빈 괄호 { }는 0 초기화를 뜻한다. iArray가 이 배열의 시작 주소 값이다. iArray [10]=10; 배열의 개념을 미리 아는 사람은 위 코드가 틀렸다는 것을 알 수 있다. 틀린 문장이다! 배열의 인덱스는 0부터 시작한다. 즉 iArray [10] 배열일 경우에는 iArray [9]까지만 값을 넣을 수 있는데 메모리를 초과해서 다른 곳에 넣었다. 다버그에도 잡히지 않는다면 다른 곳의 값이 틀릴 수 있다. .. 2022. 1. 1.
[C] 재귀 함수(2), 피보나치 수열 [C] 재귀 함수(2), 피보나치수열 목차 1. 스택 메모리 영역이란? (재귀 함수 (1)) 2. 재귀 함수란? (재귀 함수 (1)) 3. Factorial 기능을 구현하고 싶다. (재귀 함수 (1)) 3.1. Factorial 기능의 그냥 코드 구현 (재귀 함수 (1)) 3.2. Factorial 기능의 함수 구현 (재귀 함수 (1)) 3.3. Factorial 기능의 재귀 함수 구현 (재귀 함수 (1)) 4. 피보나치수열 4.1. 피보나치수열의 함수 구현 4.2. 피보나치 수열의 재귀 함수 구현 재귀 함수는 가독성이 좋고 구현이 용이하다. 편리하기는 하지만 상황에 따라 메모리 낭비가 심하기 때문에 뭐든지 적절하게 쓰는 게 중요하다. 마지막 가정 상황을 통해 한번 생각을 해볼 시간을 가질 예정이다. 일.. 2022. 1. 1.
[C] 비트 연산자 (<<, >>, &, |, xor, ~) [C] 비트 연산자 (, &, |, xor, ~) - 비트 연산자란? 비트 단위로 연산이 진행될 때 사용하는 연산자이다. 쉬프트 을 사용한다. - 2022. 1. 1.