TeamH4C

    ProjectH4C 2개월 4주차 과제 (우리집에 GDB 있는데… 메모리 보고갈래?)

    bpsecblog.wordpress.com/2016/03/08/gdb_memory_1/ - 우리집에 GDB 있는데 ... 메모리 보고갈래? - 사실 이 글, 내가 중학교 3학년 때 봤던 글이다. 물론 제대로 이해하지 못하고 넘어간 내용들도 있을 것이다. 그러니, 다시 한 번 공부하고 넘어가보도록 하자. 📖(1) 먼저 내 노트북 램은 16GB 이다. 1Byte는 컴퓨터에서 주소공간 한 개의 크기다. 그래서 16GB는 2^35Byte이니, 저 만큼의 주소를 가질 수 있다. (엄청 많다 ㄷ ㄷ ㄷ ㄷ ㄷ ㄷ) 하지만 32bit의 cpu를 가지고 있다면 8기가나 16기가에 접근을 할 수 없다. 이 자료를 참고해서, 더 알아보자. 먼저 커널 영역에는 시스템 운영에 필요한 메모리와 운영체제가 올라가 있다. 그래서 ..

    ProjectH4C 2개월 4주차 과제 (코딩도장)

    📖UNIT39 📒문자와 문자열 포인터 include int main() { char c1 = 'a'; char *s1 = "Hello"; printf("%c\n", c1); printf("%s\n", s1); return 0; } 이 코드를 살펴보자. 먼저 c1에는 'a' 라는 값이 직접 들어가진다. 하지만 s1을 보면 포인터 변수로 선언이 되어있고, "Hello"라는 값의 메모리 주소가 들어가게 되는것이다. 그래서 문자열로 사용이 가능한것이다. 배열도 포인터이다. 이런 문자열의 끝에는 null 문자가 들어가있다. 📒문자열 포인터에 인덱스를 통한 값 변경을 ? 문자열 포인터도 인덱싱을 통해 값 변경을 할 수 있을까? 먼저 이런 포인터에서도 특정 인덱스의 값을 출력은 할 수 있다. #include int ..

    ProjectH4C 2개월 3주차 과제 (포인터 5문제)

    문제 풀기에 앞서, 풀 문제들에 대하여 알아보자. 코드업에 포인터를 검색했을 때 나오는 문제이다. 저 문제들을 풀고 더 문제를 찾아보도록 하자. 성공률이 높은 부분 문자열을 먼저 풀어보자. 📒부분문자열 (코드업, 1810) 입력 첫째 줄에 1개의 문자열이 입력된다. 문자열의 최대 길이는 100미만이다. 둘째 줄에 부분문자열의 시작위치 a와 끝위치 b가 정수로 입력된다. (단 0a번째 문자부터 b번째 문자까지를 출력한다. 문제 조건이 있다. 배열을 절대 사용하지 못한다는 것이다. 그러면 우리는 포인터로 풀기로 하자. 먼저 힌트는 배열대신 동적메모리 할당법을 사용하라는 것이다. 매우 이지하다. #include #include int main(){ char *string; int a,b; string = ma..

    ProjectH4C 2개월 3주차 과제 (UNIT36, 37, 38)

    📖UNIT36 📒배열을 선언하고 요소에 접근하기 먼저, 배열이 왜 필요한 지에 관한 설명은 생략하겠다. 배열의 기본적인 선언과 초기화는 자료형 배열이름[크기] = {값1, 값2, 값3 ..}; 이렇게 진행된다. int array[5] = {10, 20, 30, 40, 50}; 만약 배열이 이렇게 선언과 초기화가 된다면, array[0] = 10, array[4] = 50 이 될 것이다. 즉 인덱싱은 0번부터 진행된다. 만약 원소의 갯수는 정했지만, 배열의 크기를 계산하기 힘들다면 int array[] = {10, 20, 30, 40, 50}; 이렇게 진행해주면 된디. 📒배열을 모두 0으로 초기화하기. 그런 배열의 모든 값을 0으로 초기화해주고 싶다면 int arr[10] = {0, } 이렇게 해주면 된다..

    ProjectH4C 2개월 3주차 과제 ( UNIT34, 35)

    이제 포인터를 복습해보자. ( 포인터라는 이 단어만 듣더라도 겁부터 먹게 된다. ) 📖UNIT34 📒포인터에 대하여 ... 이를 이해하기 위하여 먼저 변수와 메모리에 대해서 어느정도 알아야 한다. int num1 = 10; 이런 코드를 작성한다고 생각해보자. 그럼 num1이라는 공간은 메모리 위에 자리를 잡게 된다. 그 주소는 어떻게 알 수 있을까. 간단한 코드를 작성해보자. #include int main(){ int num1 = 10; printf("%p ", &num1); return 0; } 변수의 주소를 출력하는 코드이다. 이렇게 실행할 때 마다 다른 메모리 주소를 출력한다. ( 마지막의 '%' 는 왜 출력이 되는 지 모르겠음, 터미널 오류 ) 어쨌든, 그럼 이렇게 구한 변수의 메모리 주소를 어..

    ProjectH4C 2개월 2주차 과제 - 10문제 write-up

    📖서론 C언어 복습. 가장 기억에 남는 10문제에 대한 Write-Up을 작성하자. 사실, 파이썬과 C언어의 차이를 나타내는 그런 문제들도 많았다. 그러나 그런건 그렇게 재미가 있는 문제는 아니어서, 풀 때 복잡하다고 느낀 문제들에 대해 풀이를 진행해보자. 그래서 내가 고른 문제는 다음과 같다. 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 이 문제들에 대하여 자세한 Write-Up을 작성해보았다. 📖1090번 입력 시작 값(a), 등비의 값(r), 몇 번째 인지를 나타내는 정수(n)가 공백을 두고 입력된다.(모두 0 ~ 10) 출력 n번째 수를 출력한다. 그냥 등비수열에 관한 문제이다. 먼저 정수 a, r, n을 입력받아야 하므로 변수로 선언해줘야 한다. 그 ..