월 19,800원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결홍정모의 따라하며 배우는 C언어
스택 영역은 컴퓨터 구조에서 어디에 있나요? 램? 저장장치?
제목 그대로입니다! 저장장치에 저장되어 있다가 가져와서 쓰는건지 램? 캐쉬 메모리?에서 바로 쓰는건지 궁금합니다.
- 미해결홍정모의 따라하며 배우는 C언어
(10.14) , 9분 23초 질문
39번째 줄에 *(*(arr2d+j)+i)+=1.0f; 를 없애도 똑같이 실행되어서 없어도 되는 것 같은데, for문에 왜 들어가있는지 잘 모르겠습니다.
- 미해결홍정모의 따라하며 배우는 C언어
for문에서 지역변수 scope 관련 질문
변수 num의 scope가 for문 블록 {}이라서 반복 수행을 할 때마다 메모리상에서 할당되었다가 소멸되는 것을 반복하는 것은 알겠는데.. 그럼 for문 초기식에서 선언된 변수 i의 scope는 정확히 어떻게 되는 건가요?? 물론 변수 i는 for문의 초기식에서 지역변수로 선언된 거기 때문에 for문을 탈출하면 메모리상에서 사라지겠지만 접근할 수 있는 범위나 메모리상에 존재하는 기간만 놓고 봐도 변수 num보다는 scope가 넓은 것 같은데 정확한 scope를 모르겠어서 질문올립니다.. 감사합니다.
- 해결됨홍정모의 따라하며 배우는 C언어
다중 구조체로 구성된 자료구조에서 위치를 이동하는 함수 구현에 대한 질문입니다.
안녕하세요. 이 강의를 완강하고 부록 강의도 수강하다 의문이 생겨 질문드립니다. 이 강의와는 좀 거리가 있는 질문이긴 하지만 부록 강의에 올리면 질문 확인에 시간이 오래 걸릴것 같아 부득이하게 여기에 올립니다. 해당 코드는 제가 이진 트리(부록 강의 17.17)예제의 일부를 풀어본 것입니다. #include <stdio.h> #include <string.h> #include <stdlib.h> #include <stdbool.h> #define TMAX 20 #define MAXITEM 20 #define SPACING 30 void initialize(Tree* ptree); bool empty_tree(const Tree* ptree); bool full_tree(const Tree* ptree); int item_count(const Tree* ptree); int compare(const Item first, const Item second); Node* make_node(const Item* pi); // 요점 void move_to_index(movies** Head, int index); // 구현 목표 bool add_item(const Item* pi, Tree* ptree); // typedef struct { char character[TMAX]; char name[TMAX]; } Item; typedef struct node { Item item; struct node* left; struct node* right; } Node; typedef struct tree { Node* root; int size; } Tree; // 출력 함수 void print_item(Item item) { printf("%s (%s)\n", item.character, item.name); } void print_graph(Node* root, int space) { space += SPACING; if (root == NULL) { for (int i = SPACING; i < space; i++) printf(" "); printf("NULL"); return; } print_graph(root->right, space); printf("\n"); for (int i = SPACING; i < space; i++) printf(" "); print_item(root->item); print_graph(root->left, space); } void print_tree(Tree* ptree) { printf("\n--------Print Start--------\n"); print_graph(ptree->root, 0); // 그래프 출력 printf("\n---------Print End---------\n"); } // 출력 함수 int main() { Item items[] = { {"Iron Man","Tony Stark"}, {"Thor","Thor Odinson"}, {"Ant Man","Hank Pym"}, {"Wasp","Janet van Dyne"}, {"Hulk","Bruce Banner"}, {"Captain America","Strve Rogers"}, {"Scarlet Witch","Wanda Maximoff"}, {"Black Widow","Natasha Romanoff"}, {"Dr. Strange","Stephen Strange"}, {"Daredevil","Matthew Murdock"}, {"Punisher", "Frank Castle"}, {"Batman","Bruce Wayne"} }; int n = sizeof(items) / sizeof(items[0]); Tree tree; initialize(&tree); for (int i = 0; i < n; ++i) if (!add_item(&items[i], &tree)) break; print_tree(&tree); return 0; } // 편집 함수 static Node* make_node(const Item* pi) { Node* MakeNode = (Node*)malloc(sizeof(Node)); MakeNode->item = *pi; MakeNode->left = MakeNode->right = NULL; return MakeNode; } void initialize(Tree* ptree) { ptree->root = NULL; ptree->size = 0; } bool empty_tree(const Tree* ptree) { if (ptree->size == 0) return true; return false; } bool full_tree(const Tree* ptree) { if (ptree->size == MAXITEM) return true; return false; } int item_count(const Tree* ptree) { return ptree->size; } int compare(const Item first, const Item second) { return strcmp(first.character, second.character); } 우선 이 질문에 별로 필요하지 않는 부분은 지우고 하나의 소스파일에 모았습니다. 여기서 제가 구현하려고한 함수는 move_to_index입니다. 우선 add_item함수 코드입니다. bool add_item(const Item* pi, Tree* ptree) { if (full_tree(ptree)) { puts("Can't add more item."); return false; } if (ptree->root == NULL) { ptree->root = make_node(pi); ptree->size++; return true; } Node* AddItem = ptree->root; // 코드 가독성 위해 Node* 변수 사용 while (1) { int comp = compare(AddItem->item, *pi); if (comp == 0) { puts("Can't add duplicated item."); return false; } if (comp > 0) { if (AddItem->left != NULL) AddItem = AddItem->left; else { AddItem->left = make_node(pi); ptree->size++; return true; } } else { if (AddItem->right != NULL) AddItem = AddItem->right; else { AddItem->right = make_node(pi); ptree->size++; return true; } } } } 해당 함수는 트리에 새로운 노드를 추가하는 함수로 별 이상없이 작동합니다. 하지만 저는 이 함수에서 노드를 추가할 위치까지 이동하는 while 반복문을 사용자가 목표로 하는 노드까지 이동하는 별개의 함수로 구현하여 이를 노드의 추가 뿐만 아니라 삭제, 검색등 여러 작업에 사용하려고 했습니다. // 구현 실패 int goto_index(const Item* pi, Tree* ptree) { Node* Index = ptree->root; while (1) { int comp = compare(Index->item, *pi); if (comp == 0) return 0; if (comp > 0) // comp == 1 { if (Index->left == NULL) { ptree->root = Index; return 1; } Index = Index->left; } else // comp == -1 { if (Index->right == NULL) { ptree->root = Index; return -1; } Index = Index->right; } } } bool add_item(const Item* pi, Tree* ptree) { if (full_tree(ptree)) { puts("Can't add more item."); return false; } if (ptree->root == NULL) { ptree->root = make_node(pi); ptree->size++; return true; } int AddItem = goto_index(pi, ptree); // goto_index로 ptree의 포인터 이동 실패. 첫 노드 포인터 유지 if (AddItem == 0) { puts("Can't add duplicated item."); return false; } if (AddItem > 0) ptree->root->left = make_node(pi); else ptree->root->right = make_node(pi); ptree->size++; return true; } 하지만 해당 코드는 물론이고 매개변수를 이차원 포인터나 Tree* 형 변수로 바꿔보는 등 여러 시도를 해봤지만 모두 작동하질 않았습니다. 이 문제의 원인이 무엇인가요? 뭔가 풀릴듯 하면서 풀리지 않아 참 답답합니다. 답변 부탁드립니다.
- 미해결홍정모의 따라하며 배우는 C언어
선언이 필요하다는 경고
안녕하세요. 선생님이 코드를 써 내려가시기 전에 일시정지하고 제 나름대로 코드를 쓰다가 문제가 생겨서 질문을 남겼습니다. int main() { int a, b, power, i; printf("a^b\n"); while (1) { printf("a = "); scanf("%d", &a); printf("b = "); scanf("%d", &b); for (i = 0, power = 1; i < b; ++i) { power = power * a; } printf("%d\n", power); } return 0; } 질문: for문에 { }를 씌우면 return 0; 다음의 }에 빨간 밑줄이 그이면서 오류가 뜨고 선언이 필요하다고 합니다. { }를 벗겨 내면 오류가 없어지고요. 실행은 됩니다. 제 코드에 문제가 있나요?
- 미해결홍정모의 따라하며 배우는 C언어
9.1 강의 예제
밑에 처럼 오류가 뜨는데 어떻게 해결해야되는지 모르겟어요..
- 미해결홍정모의 따라하며 배우는 C언어
Visual studio에서 x64랑 x86 차이점..
구글링 해보니까 64비트로 컴파일 할 수도 있고 32비트로 컴파일 할 수도 있는데.. 어떤 방식으로 하든 이식성 측면에서 상관 없는 건가요?? 다른 차이점이 있나요??
- 해결됨홍정모의 따라하며 배우는 C언어
5.4 코드 질문 있습니다!
강의 시간에 다룬 내용인 복리 문제입니다.이해가 가지 않는 부분이 있어서 댓글 남깁니다. 아시는 분이 계신다면 답변 부탁드립니다. 위 사진은 강사님께서 하신 방법 그대로를 따라서 작성한 코드이고 이 사진은 제 궁금증입니다."fund에 seed_money를 넣고 반복문에 fund를 사용 할 거라면 그냥 처음부터 fund 선언을 하지 않고 바로 seed_money를 사용하면 안 되나?" 가 제 의문입니다. 제 방식 대로 했더니 올바른 답도 나와서요. 강사님께서는 보는 사람이 코드를 더 정확하게 이해할 수 있게 만들기 위해 fund 변수를 넣으셔서 짠건가요?
- 미해결홍정모의 따라하며 배우는 C언어
7.11 최대,최소,평균 구하기 예제
초반에 while(scanf("%f",&input)==1) 이렇게 설정하면 문자를 input에 넣는 순간 while문을 나가도록 하는 설정이라고 설명 해주셨는데.. 이유가 input의 자료형이 float이기 때문에 문자를 넣는순간 while문을 빠져나오는 것인가요??(문자는 float형이 아니기 때문!) 또, scanf("%f",&input)==1 에서 ==1이 뜻하는 것은 무엇인가요???input에 float형을 넣기만 하면 무조건 true라는 뜻인가요? 수업을 듣다 이 부분이 너무나도 이해가 되지 않아서 이렇게 질문드립니다!~~
- 미해결홍정모의 따라하며 배우는 C언어
normalized significant 질문
6분 28초쯤 normalized significant 설명하실 때 1.ㅁㅁㅁㅁ x 2^△라고 하셨는데, 3.14같은 10진수부가 1이 아닌 숫자들은 normalized significant 형태가 어떻게 되는 걸까요? 3.ㅁㅁㅁㅁx 2^△로 이해하면 될까요? 그럼 결국 normaized significant는 소수점을 나타내는 밑이 2인걸 의미한다고 보면 될까요?
- 미해결홍정모의 따라하며 배우는 C언어
3.6 정수의 오버플로우 강의 내용 질문
3.6 정수의 오버플로우 강의에서 5분쯤 따라하던 중 'printf' : format string '%u' requires an argument of type 'unsigned int', but variadic argument 1 has type 'size_t' warning이 나옵니다. #define _CRT_SECURE_NO_WARNINGS 는 옵션에서 적용한 상태입니다. Warning 발생 원인을 모르겠습니다.
- 미해결홍정모의 따라하며 배우는 C언어
10.16 다차원배열 함수전달시 질문
함수 선언시( int ar[][],int row,int col ) 이런식으로 받는다면 배열에 대해서 col까지 고려안해도 되니까 훨씬 일반적인 것 아닌가요?? 이런식으로 못하는 이유가 있나요?? 1차원 배열을 함수로 받을때엔 (int ar[], int row) 이런식으로 받았는데 저렇게 받으면 안되는 이유가 있나요??
- 미해결홍정모의 따라하며 배우는 C언어
debug 했을때랑 release 했을때랑 왜 다른가요
디버그 모드로 했을 때는 이렇게 맨 끝에가 80이라고 뜨고요 릴리스 모드로 했을 때는 이렇게 맨 끝에가 0이라고 뜨는데 왜 다르게 실행되나요?
- 미해결홍정모의 따라하며 배우는 C언어
1.11 강의에서 질문있습니다
선생님 . 은 현재 디렉터리 . . 는 상위 디렉터리 라는 것은 알겠는데 강의 4:06쯤 dir 명령을 내렸을 때 파일에서 보이지 않는 02/15/2019 06:04 AM <DIR> . 02/15/2019 06:04 AM <DIR> . . 이게 왜 나오는지 궁금합니다. 그리고 explorer 과 explorer . 의 차이는 뭔가요? 강의에서 . 의 의미를 현재 위치에서 실행시키는거라고 설명하시는데, . 없이 explorer 만 쳐도 실행이 되더라구요. 항상 자세한 답변 감사드립니다!
- 미해결홍정모의 따라하며 배우는 C언어
복사가 안돼요
에러가 떴을 때 밑에 나온 _CRT_SECURE_NO_WARNINGS 이걸 써야해서 복사해야하는데 이렇게 영역만 클릭이 되고 특정 단어, 텍스트는 드래그가 안돼요 어떻게 해야하나요?
- 미해결홍정모의 따라하며 배우는 C언어
4:08에
제목에 적힌 시간대에 보시면 priview 파일에 없는 게 cmd창에서 뜨길래 여쭤봅니다. cmd창에 있는 Common7 위에 위치한 .과 . . 은 뭔가요? 왜 저기에만 있는거죠?
- 미해결홍정모의 따라하며 배우는 C언어
공용체 Designated initializer 질문이 있습니다.
#include <bits/stdc++.h> using namespace std; /* Union - Store differnt data types in the same memory space - Structure vs Union */ /* 유니온은 유니온 안에 다른 데이터형들이 여러개 있어도 메모리공간을 같이 공유해서 사용한다. 그래서 밑의 my_union은 8바이트가 잡히게된다. */ union my_union { int i; double d; char c; }; int main() { union my_union uni; cout << sizeof(uni) << endl; cout << (long long)&uni << endl; //모두 맴버의 같은 주소가 나온다 -> 주소를 공유한다.!! cout << (long long)&uni.i << " " << (long long)&uni.d << " " << (long long)&uni.c << endl; //결과는 A에 대해서 나온다! uni.i = 5; uni.c = 'A'; union my_union uni2 = uni; union my_union uni3 = { 10 }; // First member only union my_union uni3 = { .c = 'A' }; return 0; } ================= 현재 소스에서 union my_union uni3 = { .c = 'A' }; 를하니 오류가 뜨는데 왜 이런거죠?
- 해결됨홍정모의 따라하며 배우는 C언어
print f 함수가 있는 lib파일을 선생님을 따라 찾는데 못 찾겠어요
비쥬얼 스튜디오를 설치한 곳이 선생님과 다른지, 내pc Program Files(x86) microsoft 까진 찾았는데 그 후로는 영상과 같이 Microsoft Visual Studio 11.0 , 12.0, 14.0 이런 건 보이지 않네요... 어디 있을까요? 그리고 'msvcrtd' 에 뜻이 있나요?
- 미해결홍정모의 따라하며 배우는 C언어
왜 자꾸 전 프로젝트가 실행되나요
선생님께서는 설명하시느라 계속 했던 거 지우시고 하시는데 저는 남겨두고 싶어서 계속 새로운 프로젝트를 만들면서 하고 있어요 그런데 새로운 프로젝트 만들고 실행시키면 자꾸 전 프로젝트가 실행이 돼요. 왜 그런건가요? 새로운 프로젝트만 실행시킬 수 있는 방법이 없나요? 이렇게 6번째 프로젝트를 실행시키면 5번째 프로젝트가 자꾸 실행돼요
- 미해결홍정모의 따라하며 배우는 C언어
선택 정렬 풀이
void selectionSort(int arr[], int size) { int min_index; for (int i = 0; i < size - 1; ++i) { for (int j = i, min_index = i; j < size - 1; ++j) min_index = arr[min_index] < arr[j + 1] ? min_index : j+1; swap(&arr[i], &arr[min_index]); } } 계속 Error C4700 uninitialized local variable 'min_index' 라고 뜹니다. 도무지 해결이 안됩니다 ㅠㅠ 뭐가 문제인지를 모르겠습니다. int i, j, min_index; for (i = 0; i < size - 1; ++i) { min_index = i; for (j = i + 1; j < size; ++j) { /*if (arr[min_index] > arr[j]) min_index = j;*/ min_index = arr[min_index] < arr[j] ? min_index : j ; } swap(&arr[min_index], &arr[i]); } 이 함수는 정상적으러 작동하는데 두 개가 뭐가 달라서 첫번째꺼는 Error가 뜨고 두번째꺼는 정상작동하는지 모르겠습니다. ㅜㅠ