부스트코스 (14) 썸네일형 리스트형 [부스트 코딩 뉴비 챌린지 2020] week5_Q&A : 메모리 해제와 메모리 할당 Q. 메모리를 해제하는 함수인 free와 메모리를 초기화 하는 함수인 memset가 있습니다. 먼저 메모리를 해제한다는 것과 메모리를 초기화 한다는 것의 차이가 무엇인지 궁금합니다. 만약 둘의 의미가 비슷하다면 free함수와 memset함수의 차이는 무엇인가요? A. free와 memset은 의미가 완전히 다릅니다. malloc으로 할당된 메모리를 memset을 이용하여 초기화하면, 할당된 메모리에 담긴 값이 모두 특정한 값으로 바뀌게 됩니다. 반면, malloc으로 할당된 메모리를 free를 이용하여 해제하면, 그 메모리는 쓰레기통에 들어간다고 생각하시면 될 것 같습니다. 즉, 다시는 그 메모리에 의도적으로 접근할 수 없다는 뜻입니다. 우연히 접근할 수는 있겠지만 일반적으로는 해제된 메모리는 다시 이용.. [부스트 코딩 뉴비 챌린지 2020] week6_Q&A : 이중 포인터 Q. 다른 미션과 달리 미션2에서 StackNode* 가 아닌 StackNode**를 사용해야 하는 이유가 무엇인가요? 자료형**의 명칭, 의미와 사용법, 그리고 자료형*를 사용했을 때보다 이를 사용했을 때의 장점이 궁금합니다. A. **는 이중포인터라고 부르시면 됩니다. int** ptr이라고 되어있으면, ptr은 int*를 가리키는 포인터입니다. int*는 int를 가리키는 포인터이죠. 미션2에서 StackNode**를 사용한 이유는, push, pop, peek 함수에서 StackNode*를 input으로 받아와서는 정상적인 동작을 하지 않기 때문입니다. 미션2의 함수를 현재 얼마나 구현하셨는지 알 수 없어 더 이상 자세한 설명을 드리기는 어려울 것 같지만, push와 pop 함수 내에서는 root.. [부스트 코딩 뉴비 챌린지 2020] week6: 자료구조 1. malloc과 포인터 복습 들어가기 전에 이번 강의부터는 C로 구현할 수 있는 다양한 데이터 구조를 배우게 됩니다. 데이터 구조를 정의하고 관리하는데 있어서 메모리와 포인터에 대한 개념을 정확히 이해하는 것이 중요합니다. 먼저 지난 시간에 배운 malloc 함수와 포인터를 복습할 수 있는 작은 예제를 살펴 보겠습니다. 학습 목표 포인터의 개념과 malloc 함수의 용법을 잘 이해할 수 있습니다. 핵심 단어 포인터 malloc 학습하기 지난 강의에서 우리는 몇 개의 새로운 c문법을 배웠다. 포인터로 메모리상의 실제 주소를 확인할 수도 있었고, * 연산자나 malloc과 free같은 함수로 메모리를 관리하는 방법에 대해서도 배웠다. 복습으로 다음과 같이 버그가 있는 짧은 코드를 보자. int main(.. [부스트 코딩 뉴비 챌린지 2020] week4_코벤져스 LIVE 강의 PDF 파일 받기 모두를 위한 컴퓨터 과학(CS50 2019) 알고리즘 되짚어 보기 개발자가 되기 위해서 알고리즘은 가장 중요하며 반드시 거쳐야하는 것이다. 알고리즘은 생각하는 능력을 기르는 것이다. 컴퓨터가 어떻게 사고하게 할 것인지 배우는 과목이므로, 코딩을 얼마나 잘했냐보다는 얼마나 생각했는지가 중요하다. 알고리즘 효율성 컴퓨터 프로그래밍에서 "주어진 문제를 얼마나 효율적으로 푸느냐"는 매우 중요하다. 1024명의 학생 명단이 있을 때, 한 명의 이름을 확인하는데 걸리는 시간이 1초라 하면, '이진원'이라는 이름의 학생을 찾는데 걸리는 시간은? - 선형 검색 : 최악의 경우 1024초 필요함 - 이진 검색: 최악의 경우 10초(=log_2 1024)가 필요함 (정렬되어있다는 가정하에) 따라서 효율적.. [부스트 코딩 뉴비 챌린지 2020] week5: 메모리 1. 메모리 들어가기 전에 우리가 C로 작성한 변수들은 실제로 컴퓨터 메모리에 어떻게 저장될까요? 메모리 주소를 나타내는 방법과 그 주소를 알아내는 방법, 그 주소에 찾아가는 방법을 배워봅시다. 학습 목표 16진법을 읽고 쓸 수 있습니다. 메모리 주소에 접근하고 값을 받아오는 코드를 C로 작성할 수 있습니다. 핵심 단어 16진법 메모리 주소 학습하기 지난주까지는 알고리즘에 대해 집중적으로 배웠다. 비교와 교환을 수없이 했었다. 알고리즘과 개념적인 부분을 많이 다뤘다면, 오늘은 좀더 실용적이고 체계적인 부분에 집중할 것이다. 그렇다면 이 보조 바퀴를 우선 떼는 것이 좋을 것이다. 16진수 제일 먼저 배울 것은 수를 세는 방식이다. 첫 주에 배운 내용을 기억해보면, 이미 우리에게 익숙한 10진법을 배웠고, .. [부스트 코딩 뉴비 챌린지 2020] week4 Q&A (2) : 배열 선언 시 주의점 Question num1, num2 배열을 전역변수로 선언 후 num1[0]=1을 넣은 후에 두 배열값을 출력하니 num1값만 변하고 num2값은 00000으로 출력되어야 하는데 num2의 값도 함께 변화합니다. 처음에 선언할 때 값을 위와 같이 넣고 두 배열의 결과를 보아도 num2에 넣었던 값이 num1 배열안에 들어가는 것을 볼 수 있습니다. 왜 두 배열이 함께 변화할까요? 또한 위와 같이 int num1[5] = {};와 같이 배열의 크기를 정해주는 경우에 이러한 문제점이 사라집니다. 왜 크기를 정해주면 이 현상이 발생하지 않게 되는 걸까요? (+) 위의 의문점을 불러온 미션01 작성 중에서 발생한 문제 - 각 num1, num2 배열이 난수 5개를 차례대로 받는 경우 두 배열의 상태를 출력한 결.. [부스트 코딩 뉴비 챌린지 2020] week4 Q&A int 배열 반환하기 #include int* bubble_sort(int a[], int length); int main(void){ int a[5] = {1, 2, 3, 4, 5}; int* b = bubble_sort(a, 5); return 0; } int* bubble_sort(int a[], int length){ int temp; for(int i = 0; i a[j+1]){ temp = a[j]; a[j] = a[j+1]; a[j+1] = temp; } } } return a; } int* b = 함수명 〓 int* (새로운 변수명) Q. 위 코드에서 새로운 변수명이 아닌.. [부스트 코딩 뉴비 챌린지 2020] week3_LIVE 강의 미션 Hint 2번 컴파일하고 파일을 실행할 때 " 파일명" 작성해주면 지정파일로 내보낼 수 있다. 꿀팁들 snake_case 각 단어의 사이를 언더바_로 구분해주는 표기법 출처 : => 더 많은 case 보러 가기 개발자가 지켜야할 덕목 1. 모르는 것을 두려워 하지 말자 (배우는 것을 두려워하지 말자) 2. 의사소통 3. 스트레스 관리 함께 일하고 싶은 개발자 또는 동료가 되는 방법 - 리뷰르 잘해주는 동료 - 아는 것/모르는 것을 공유해주는 동료 챙겨야 할 역량 - 코드 스타일 : https://developer.gnome.org/programming-guidelines/stable/c-coding-style.html.k.. 이전 1 2 다음