일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 하이브
- Sort
- python
- HelloWorld
- codingthematrix
- yarn
- 코딩더매트릭스
- RNN
- Java
- C언어
- 주식분석
- NumPy
- GRU
- 파이썬
- recursion
- collections
- tensorflow
- 딥러닝
- LSTM
- 그래프이론
- 알고리즘
- 하둡2
- hive
- 선형대수
- graph
- 텐서플로
- hadoop2
- effective python
- C
- scrapy
- Today
- Total
목록C&C++/C - Programming (13)
EXCELSIOR
11.3 포인터의 배열과 다중 포인터포인터 또한 그 자체도 변수(메모리)이다. 변수는 메모리이고 메모리는 관리 목적의 고유번호 즉, 주소가 부여되어 있다. 일반적인 변수의 경우, 이름, 주소, 그 안에 저장된 데이터가 명확하게 구분된다. 하지만 포인터는 변수 자체의 주소와 변수에 저장된 주소, 이렇게 두 개의 주소가 공존 한다.다중 포인터 또한 일반 포인터와 다를 것이 없으며, 가리키는 것이 포인터 변수일 뿐이다. 예를 들어, int형 변수에 대한 포인터는 int*이며, int* 변수에 대한 포인터는 int** 이다.포인터 자료형간접지정 연산결과코드 예char**(char*) == charint nData = 10; int *pnData = &nData;char* **(char**) == char*int..
11.2 메모리 동적 할당 및 관리지금까지 예제코드에서 봐온 변수들은 메모리를 할당하고 해제하는 과정을 컴파일러가 자동으로 관리해주기 때문에 메모리 관리에 신경을 쓰지 않아도 됐었다. 그래서 이러한 변수들을 자동변수라고 불렀다.그렇다면, 이제 메모리 동적 할당 및 관리에 대해 알아보자. malloc()과 free()함수는 메모리를 동적으로 할당 및 해제하는 함수다.malloc() 함수를 이용하면 자동변수로 사용할 수 있는 메모리와는 비교할 수도 없을 만큼 큰 메모리를 자유롭게 '동적(dynamic)'으로 다룰 수 있다. 즉, 프로그램 실행 중에 대량의 메모리가 필요한 경우 바로 할당이 가능하다. 대신 이러한 할당에는 반환(또는 해제)을 해주어야 한다.void *malloc(size_t size);Desc..
Chap11.1 - 메모리와 포인터 (1)드디어 C언어의 꽃인 포인터다. 이번 장에서 실습을 제대로 하기 위해서는 몇가지 설정이 필요하다. 우선 나는 Chap02 ~ Chap10까지는 Linux, Mac OS에서 실습을 하여 gcc로 컴파일하였다. 하지만, 이번 장에서 포인터에 대해 실습할 때는 Windows 환경에서 Visual Studio 2017을 이용하여 실습을 진행하였다. Visual Studio에서 새로운 프로젝트를 생성한 후 Alt + F7 를 눌러 프로젝트의 속성을 다음과 같이 수정해야 한다.[구성 속성] → [링커] → [고급] 에서 '임의 기준 주소' 옵션을 '아니요(/DYNAMICBASE:NO)' 로 설정해줘야 한다.그 이유는 Windows7 이후 부터는 ASLR(Address Spa..
Chap10 - 함수에 대한 기본 이론함수는 C언어 프로그램을 이루는 핵심이라고 할 수 있다. 각종 연산식이 모여 한 구문을 이루고, 다시 여러구문이 의미있는 절차상의 흐름을 만들고, 그 절차상의 흐름이 하나로 뭉쳐 함수를 이루고, 다시 함수가 함수를 호출하여 연계하고 또 다른 흐름을 만듦으로써 C언어 기반의 프로그램이 완성된다.함수와 반복문은 반복되는 코드들을 처리하는 것과 관련된 문법이다. 반복문은 연속적인 반복을 의미하고, 함수는 불연속적인 반복을 통한 코드 재사용을 의미 한다. 10.1 사용자 정의 함수의 선언 및 정의사용자 정의 함수(user-defined function) 는 기존의 표준 입/출력 함수(ex. getchar()/putchar())들과 달리 사용자(개발자)가 스스로 만들어낸 함수..
Chap09 - 배열을 활용한 프로그래밍 기법9.1 배열 요소의 정렬정렬 알고리즘을 공부할 때 가장 기본이 되는 두 가지는 선택정렬(selection sort)과 버블정렬(bubble sort) 이다. 두 알고리즘 모두 반복문 두 개를 중첩하는 것만으로 구현할 수 있으며, 다른 정렬 알고리즘보다 구조가 단순하다. 9.1.1 선택정렬로 알려진 버블정렬배열 전체 요소를 오름차순 정렬하는 가장 쉬운 방법은 모두 정렬될 때까지 최소값을 구하는 것이다. 만약 아래와 같이 5개인 배열을 오름차순으로 정렬하고자 한다면, 5개의 요소에서 최소값을 구해 각 항을 교환하는 방식으로 해당요소에 순차적으로 담는다. /* 9-1. 선택정렬로 알려진 버블정렬 구현 */ #include int main(void){ in..
Chap 08 - 배열 Array배열(array)은 형식이 같은 자료 여러 개가 모여 새로운 하나를 이룬 형식이다. 예를 들어, int aList[5]는 5개의 의 int형 자료가 모여 int형 배열이 된다. 배열은 지금까지 배운 변수와 다르게 배열의 이름은 변수의 이름과 달리 메모리의 주소다. 배열은 배열이름[인덱스] 형식을 가지며, 각 배열요소의 인덱스는 0에서 부터 전체요소의 개수보다 1 작은(n-1) 범위까지이다. 아래의 예제는 다섯 개의 수를 입력받아 배열(aList)에 저장한 후 출력하는 코드이다. 아래의 예제 코드에서 확인할 수 있듯이, aList는 변수가 아니라 0번 요소의 주소 즉, &aList[0] 이다. // array01.c #include int main(void){ // ..
Chap07 - 반복문반복문(Repetitive Statement)은 일정구간의 코드를 연속적으로 반복해 실행하는 제어문이다. 7.1 while - 조건 기반 반복문while문은 아래의 그림에서도 확인할 수 있듯이 if문과 차이가 없다. 괄호 속에 조건식을 기술하는 문법이나 여러 구문을 스코프({})로 묶는 것이 동일하다. 하지만, while문은 if문과 달리 반복문이다. 내부 구문이 끝나면 그다음으로 그냥 넘어가는 것이 아니라 다시 구문의 처음으로 돌아가 조건식을 확인한 후 조건이 참이면 계속해서 구문을 돌고, 거짓이면 반복이 끝나게 된다. 7.1.1 기본구조 조건에 의한 제어다음 예제코드는 getchar()를 이용해 사용자로부터 문자 혹은 문자열을 입력받은 후, putchar()로 출력하는 코드다. ..
Chap06 - 기본 제어문 (Control Statement)6.1 if 문if문은 분기문(branching statement)라고도 하며, 조건식을 기준으로 구문들의 절차상 흐름을 변경한다. 6.1.1 기본 구조if문의 구조는 아래의 그림과 같다. 다음 예제코드를 통해if문의 사용법에 대해 알아보자. 아래의 코드는 사용자가 입력한 나이가 20 이상인지 비교한다. 결과가 참(true)이면 if문에 속한 나머지 구문을 수행하고 false이면 if문을 생략한다. // ctrlbranch01.c #include int main(void){ int nAge = 0; printf("나이를 입력하세요. : "); scanf("%d", &nAge); // if문 시작 if(nAge >= 20) /..