개발 STORY 47

정적/동적 메모리 할당(Memory Allocate)

우리가 변수를 선언하면컴퓨터는 메모리를 할당해주고 변수를 통해 그 메모리에 접근 할 수 있게 해줍니다. 컴퓨터 메모리는ROM(Read Only Memory) / REM(Random Access Memory)으로 나뉘어지는데 ROM은 우리가 흔히 말하는 하드디스크이고REM은 흔히 말하는 REM(렘)입니다 ROM은 저장공간 이라고 생각하면 편하고REM은 어떤 주소를 찾아가도 속도가 같기에 프로그램을 불러들여서 사용과 반환을 하는 장치라고 보면 됩니다. REM의 구조는다음과 같은 구조를 가집니다DATA 영역은 전역변수가 저장되고STACK 영역은 지역변수가 저장되며그리고 HEAP 영역은 우리 사용자(개발자)가 직접 관리를 할 수 있는 메모리 공간 입니다.   메모리 할당에는정적, 동적 두가지 종류가 있는데 전역..

문자열 함수 활용 feat)예외처리

char cStr[] = { 'H', 'e', 'l', 'l', 'o', ',' , ' ', 'W', 'o', 'r', 'l', 'd', '!','\0'};char* str = "Hello, World!";int cnt = 0;while (cStr[cnt] != '\0'){ printf("cStr[%d]: %c\n", cnt, cStr[cnt]); ++cnt;}printf("cStr Length: %d\n", cnt);문자열의 크기를 구하는 법에는 sizeof와 배열의 첫 요소를 나누는 형식도 있지만다음과 같이 문자배열 0에서 부터 반복문을 돌려 나오는 cnt 값으로 문자열의 크기를 구하는 방법도 있다. 그런데.. 문자열의 크기를 구하는 법을 예시로 들어서 그렇지만굉장히 자주 쓰이는 요소들은 ..

문자열(String)

기존에 문자는char형을 이용해서 문자를 출력했다char c = 'c';printf("c: %c \n", c); 문자열을 출력하려면 하나의 문자만을 출력하는 char형 배열을 선언해서 출력을 했는데char cStr[] = { 'H', 'e', 'l', 'l', 'o', ',' , ' ', 'W', 'o', 'r', 'l', 'd', '!'};int sStrLen = sizeof(cStr) / sizeof(cStr[0]);// sizeof(cStr) / sizeof(cStr[0]); 배열의 길이를 구하는 식, // char형은 1byte의 크기라서 이렇게 나눠줄 필요가 없이 sizeof(cStr) 만으로 충분하다printf("for문으로 c배열을 출력 : ");for (int i = 0; i  ..

함수(Function)

함수(Function)는반환형 함수명(매개변수);의 구조를 가진다 함수선언(Function Declration) void PrintHelloWorld();함수명은 잘 지어야한다. 보자마자 무엇을 하는 것인지 알 수 있도록 해야 하기 때문에 축약어를 잘 쓰지 않는다.그렇기 때문에 해당 함수에는 함수명이 가지는 기능이 아닌 다른 기능을 넣지 않도록 주의하자. 함수정의(Function Definition)void PrintHelloWorld() { printf("Hello, World!\n");}함수가 사용되는 기능을 구현하는 것 이라고 생각하면 된다. int Sum(int _lhs, int _rhs); //함수선언시 매개변수 명 생략 가능int Sub(int, int); int Mul(int _lhs, in..

포인터(Pointer)

포인터란 간단히 말해 메모리 주소를 저장하는 공간 이다.int var = 10;// * : 포인터// & : 변수의 주소int* pVar = &var; // int* : 정수형 포인터 선언, 정수형 포인터 변수 pVar에 var의 주소를 담는다 #includevoid main(){ int var = 10; int* pVar = &var; printf("var: %d\n", var); printf("*(&var): %d\n", *(&var) ); printf("&var: %p\n", &var ); *pVar = 100; printf("pVar: %p\n", pVar); printf("*pVar: %d\n", *pVar); printf("var: %d\n", var);}*을 변수 뒤에 붙인다는 것은 ..

배열(Array)

배열(Array) 이란? 같은 형태의 데이터를 연속적으로 저장하고 활용하려는 경우에 사용하는 것 입니다. 100개의 데이터가 있다면 100개의 변수를 지정하고 사용해야합니다하지만 저 100개의 데이터가 같은 종류라면 크기(길이)가 100인 배열을 하나만 선언한다면 100개의 데이터를 쉽게 다룰 수 있습니다. 정수형 변수 i는 4byte를 사용합니다길이가 4인 정수형 배열 arr[4]는 16byte의 크기를 활용 할 수 있습니다.// 배열(Array)// arr: 배열의 이름// [5]: 배열의 길이int arr[5] = { 1 , 2 , 3 , 4 , 5};배열의 선언은 다음과 같이자료형 변수명[길이] = {초기값}; 으로 이루어 집니다 배열에는 몇가지 특징이 있는데배열의 초기화시 배열의 길이를 넘어가는..

반복문(Loop)

반복문은 특정한 조건에 맞게 반복 실행되는 것을 말한다 for, while, do~while 문이 있다. for문for(초기화; 비교문; 증감문;) for 동작순서 -> 초기화 -> 비교문 -> 내용 -> 증감문) for (i = 5; i > 0; --i) printf("%d ", i); //중괄호가 없으면 다음 한 줄만 반복됨 printf("\n");기본적으로 다음과 같은 구조를 가지고 있다.for문에는 여러 특징이 있는데for (i = 0, j = 2; i 3)break;}printf("\n"); 이렇게 초기화, 증감문을 여러개를 둘 수도 있고 i = 0; for (;;) //초기화, 비교문, 증감문 셋다 생략이 가능하다 { printf("%d ", i); ++i; //탈출문(Escape)..

조건문

조건문은 주어진 조건을 검사하여 참이면 코드를 실행하고 거짓이면 실행하지 않는 것을 의미합니다 if문if(조건문) {내용} *{ }는 생략 가능int lhs = 3;int rhs = 5;// if(조건문) { }if (lhs > 5) { printf("lhs is bigger\n");}printf("Exit\n");//if~else문 : if(조건문) {} else{}if (lhs > 5) { printf("if~else True\n");}else { printf("if~else False\n");}//if~else iflhs = 0;if (lhs > 5) { printf("lhs > 5\n");}else if (lhs 0) { printf("lhs 0\n");} 다음과 같이 사용 된다else 는 if..

비교 연산자와 논리 연산자

비교 연산자는  피연산자를 비교하는 연산자 입니다흔히들 일상에서 사용하는>, ( 표정 아님! >,  비교 연산자는int lhs = 3;int rhs = 5;//참(Ture), 거짓(False)printf("lhs rhs: %d\n", lhs > rhs);printf("lhs >= rhs: %d\n", lhs  참(1)과 거짓(0) 으로 그 값이 나오기에 이후에 코딩을 할때 많이들 사용 됩니다. 논리 연산자(Logical Operattors) printf("1 && 1 : %d\n", 1 && 1); //AND printf("0 || 1 : %d\n", 0 || 1); //OR printf("!1 : %d\n", !1 ); //NOTAND / OR / NOT 그리고 / 또는 / 아님 입니다 이 역시도 T..

연산자(Operators) 와 형변환

연산자 (위키피디아)물리학과 수학에서 어떤 함수에 작용해 그 함수를 다른 함수로 변형시키는 함수를 말한다.const int lhs = 3, rhs = 5;LHS : Left-Hand Side RHS : Right-Hand Side 등호 ( = )가 있을때 등호의 오른쪽을 RHS, 왼쪽을 LHS라고 합니다. printf("lhs + rhs: %d\n", lhs + rhs); //덧셈printf("lhs - rhs: %d\n", lhs - rhs); //뺄셈printf("lhs * rhs: %d\n", lhs * rhs); //곱셈printf("lhs %% rhs: %d\n", lhs % rhs); //(나누기 시)나머지printf("lhs / rhs: %f\n", lhs / rhs); //나눗셈 연산자는 ..