월 19,800원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 해결됨홍정모의 따라하며 배우는 C언어
3분 11초경 질문
교수님이 마치 os가 된 것 처럼이라고 하셨는데 이게 무슨 뜻인가요?os가 변수의 주소값을 정해줘야하는데프로그래머가 os처럼 변수의 주솟값을 정해줘서 os가 된것처럼 이라고 말씀하시는건가요?
- 해결됨홍정모의 따라하며 배우는 C언어
이렇게 이해한 것이 바르게 이해한 것 인가요?
안녕하세요 반갑습니다. 강의 22분 09초 경의 설명을 보고 부호 없는 정수의 언더 플로우가 헷갈려서 좀 생각을 해봤습니다. unsigned int k = 0; k = k-1; printf("k = %u\n", k);을 하면 k의 비트가 00000000000000000000000000000000였는데 리터럴 1을 빼면 ALU내부에선 -1을 더하게 되는 것과 같고 -1은 11111111111111111111111111111111비트여서 둘의 합연산 결과가 11111111111111111111111111111111이 되고 이걸 %u로 출력해주면 unsigned int의 최대값인 4294967295가 나오는 건가요? 질문 1) 10000비트에서 1을 뺀다는 설명 때문에 약간 헷갈리긴 하는데 직관적으로 이해를 돕기 위해 그렇게 설명해주신 거라고 보면 될까요? 질문 2) 그리고 추가적으로 C언어가 리터럴 상수를 해석하는 과정이 참 흥미로운데 이건 강의 후반부에 다뤄주시나요? 꽤나 궁금하네요. 질문 3) 질문 1) 2) 3)에 각각 대답해주시면 감사 하겠습니다.
- 해결됨홍정모의 따라하며 배우는 C언어
print_binary 함수 코드 질문
void print_binary(unsigned long n){ int remainder = n % 2; if (n >= 2) printf_binary(n / 2); printf("%d", remainder); return;}맨 마지막에 리턴을 해주는데 제가 볼 때는 할 필요가 없어 보이는데 해주는 이유가 뭔가요?
- 미해결홍정모의 따라하며 배우는 C언어
9.9 이진수 변환 recursion 질문건
질문 1)void print_binary(unsigned long n){ if (n > 0) { print_binary((n / 2)); printf("%d", n % 2); }} 이게 제가 작성한 코드입니다. 다름이 아니라 n이 0이 아니면 통과해서 recursion으로 함수 args에 5가 들어가고 그 다음엔 2.5가 들어가고 그 다음엔 1.0이 들어가고 그 다음엔 0.5값이니까 0이 들어가기에 튕깁니다. 그리고 다시 recursion 된 함수에서 돌아오는 과정을 거쳐야하는데 처음엔 5%2 이기에 1 이 출력 그 다음엔 2.5 %2 이기에 0이 출력그 다음엔 1 % 2 이기에 1이 출력 그 다음엔 0% 2 이기에 0이 출력 그리고 끝난다. 라고 생각이 드는데요.혹시 잘못 이해하고 있는게 있을까요? ******질문 2 ) 반면 강습자로부터 작성된 코드는 아래와 같습니다.void print_binary(unsigned long n){ int remainder = n % 2; if (n >= 2) print_binary(n / 2); printf("%d", remainder); return;} 이는 처음 remainder에 10 %2 = 0을 넣고 if 문에 의해 n이 2보다 크거나 같기에 통과 함수에 5를 args로 던지고 5 % 2 = 1 을 넣고if문 통과 후 2.5를 던짐2 % 2 = 0 을 넣고 1을 args로 던짐 1 % 2 = 1 이다. if문을 통과하지 못함그 다음부터의 과정은 recursion을 하느라 작동되지 못한 라인부터 작동되는 것인가요? 그리고 그럴떄 거꾸로 작동되는 이유가 마지막 함수 실행의 값부터 실행되기의 그런건가요?
- 미해결홍정모의 따라하며 배우는 C언어
6.13 초반 문제
로 코드를 작성했는데 337로 하여도 while문이 끝나지않아요 ㅠㅠ
- 해결됨홍정모의 따라하며 배우는 C언어
11분 16초경 질문
프로그램의 흐름이 쭉 가는데 분기가 생겼을 때if 문에서 return을 해준다면 조건을 만족시키지 않는 else에서도 return을 해줘야 한다고 하셨는데왜 그래야 하는 건가요?반환 자료형이 존재할 경우, 그러니까 보이드가 아닐 경우 함수를 호출했을 때 리턴값을 받아야하니 else에서도 return을 해줘야하는 것 인가요?
- 미해결홍정모의 따라하며 배우는 C언어
운영체제 구성 그림에서 입출력 장치의 위치
안녕하세요. "0.3.운영체제가 해주는 일들" 설명을 듣다가 의문점이 생겨서 질문 남깁니다. <그림1>위의 그림을 보면서 저는 사용자가 하드웨어 자원을 사용하기 위해서는 직접 하드웨어를 사용할 수 없기에, 응용 프로그램을 실행하고 응용 프로그램은 커널을 통해 하드웨어 자원을 사용하는 것이라고 이해했습니다. CPU, 메모리, 보조기억 장치는 직접 사용자와 상호작용을 할 수 없다는 것은 이해가 되지만(직접 손으로 조작하여 사용할 수 없기 때문), 입출력 장치는 사용자와 직접 상호작용 한다고 생각했습니다. 왜냐하면 직관적으로 생각을 해보면, 프로그램을 실행 할 때 "마우스로 응용프로그램을 클릭 or 키보드로 명령어 입력(입출력 장치 사용)-> 응용 프로그램 실행-> Kernel을 통한 하드웨어 사용(CPU, 메모리, 보조 기억장치)" 과 같은 과정이 일어나기 때문에, 입출력 장치는 사용자와 제일 먼저 상호작용 하는 것 아닌가? 라는 생각을 했습니다. <그림2>궁금증을 해결하기 위해 검색을 해보니, 다음과 같은 그림을 찾을 수 있었습니다. 위 그림을 보면 키보드 마우스 등등 입출력 장치는 사용자와 가장 먼저 상호작용을 하는 것처럼 나와있고 이는 직관적으로 이해가 됩니다. 요약해서 질문을 드리면 입출력 장치는 사용자와 가장 먼저 상호작용 하는 하드웨어임에도 불구하고 왜 <그림1>에서는 사용자와 가장 멀리 떨어진 부분에 위치하는 지 궁금합니다. 긴 글 읽어주셔서 감사드립니다.
- 미해결홍정모의 따라하며 배우는 C언어
*str 의 값
안녕하세요 교수님께서 10분 30초 쯤에 작성하시던 코드에서while (*str)이라고 작성하신 부분이 있는데요, 이 부분은 *str이 0이 아니면 while문을 진행시킵니다.또한 강의 중while (*str)와 while (*str != '\0')는 같은 역할은 한다고 말씀하신 바가 있습니다. str주소를 하나씩 옮겨가면서 읽을 값은 차례대로 1, 2, 3, 4, 5, \0 인데 \0과 0은 다릅니다.근데 어떻게 *str != 0로 처리돼서 while문이 진행된건지 궁금합니다.
- 해결됨홍정모의 따라하며 배우는 C언어
비주얼 스튜디오 2022를 사용중인데
13분 44초경에 new filter라는 항목이 있는데저는 그게 없고 new folder만 있어요그리고스샷 처럼 소스 파일 폴더도 헤더 파일 폴더도 없어여2022 버전이라서 그런건가여 아니면 제가 멀 잘못 한건가여?좋은 답변 항상 감사드립니당.
- 미해결홍정모의 따라하며 배우는 C언어
printf("%s, %p, %c\n","We,"are,*"excellent programmers");
여기 부분에서 %p가 어떻게 작동하는지 정확히 이해가 안되네요..!
- 해결됨홍정모의 따라하며 배우는 C언어
5분 20초경 질문
영상에서 5분 20초경에 int는 4바이트인데 여기에 쌓인 것은 보니까 차이가 4가 나는 게 아니고 더 큰 숫자만큼 차이가 나고있죠라고 말씀을 하시는데쌓였다는 것이 n의 주소번호가 쌓인 거라고 말씀하시는 게 맞죠? 근데 이걸 왜 쌓였다고 표현하는지 이해가 안됩니다.스택을 쌓을 때 변수가 사용할 메모리가 쌓이게 된다고 했던 거 같은데 메모리가 아닌 메모리의 주소를 쌓인다고 표현하는 게 이해가 안됩니다.그리고 int는 4바이트인데 여기에 쌓인 것은 보니까 차이가 4가 나는 게 아니고 라고 말씀을 하시는데 int가 4바이트인 것과 주소번호의 숫자가 차이가 4가 날거라고 예상하는 것이 무슨 연관이 있는 건지 이해가 안됩니다.연관이 있으니 연관이 있는 것처럼 말씀을 하시는 거라 생각은 하는데 도통 이해가 안되네요.
- 해결됨홍정모의 따라하며 배우는 C언어
매개변수화 라는게 무슨 뜻 인가요?
5.12 함수의 인수와 매개변수 강의에도 언급이 돼있길래 봤는데 통 이해를 못하겠어요함수가 매개변수화 되었다? 매개변수는 함수 선언할 때 void function(void)에서 괄호안에 들어가는게 매개변수 아닌가요?저는 이 매개변수가 인자를 받아오는 그릇으로 이해를 하고 있는데 이게 매개변수화 되었다는 거랑 연결이 잘 안되네요
- 미해결홍정모의 따라하며 배우는 C언어
Stolen 마지막부분 오류 질문입니다
아무리봐도 똑같이 따라쓴것 같지만 오류가 있다고 뜹니다 ㅠㅠ
- 해결됨홍정모의 따라하며 배우는 C언어
mingw-w64 폴더 설치 중 에러
2시간동안 꼼지락 거리다가 이상한 폴더에 mingw-w64가 숨어있는 것을 발견하였습니다!왜인지는 모르겠으나 과거에 C언어 코딩 독학용으로 깔았던 Dev-Cpp(데브씨플플) 폴더 안에 MinGW64라는 이름으로 있는 것 아니겠어요?!그리고 열어본 결과 존재 합디다...그래서 신나서 글을 쓰던 도중 '어? 이거 지우고 다시 깔면 에러가 안 뜨지 않을까?' 해서 지워봤습니다안 되더라구요...다시 방황하던 중 msys2를 설치하라는 답변글을 보고 설치했었던 msys2 폴더에서 자포자기한 심정으로 gcc.exe를 검색해 봤습니다그런데 요녀석이 ucrt64\bin 안에도 숨어있더라구요!그래서 이번에는 실험 그딴거 안하고 바로 연결했습니다
- 미해결홍정모의 따라하며 배우는 C언어
3.12 강의 수학적으로 존재하지 않는 식을 강행했을 때
안녕하세요. 비주얼 스튜디오에서 선생님과 똑같이 asinf() 코드를 작성하고 실행을 했는데 선생님 화면에서 나온1.570796-nan(ind)대신에8096.0000008096.000000이렇게 나옵니다. 뭐가 잘못된걸까요?
- 해결됨홍정모의 따라하며 배우는 C언어
11.2강 19:43 질문이 있습니다.
공부한 내용을 테스트해보려고 다음 코드를 작성했습니다.#include <stdio.h> #include <stdlib.h> int var_global_initialized = 1; int var_global_uninitialized; void func_test(); int main(void) { // 값이 저장되는 메모리 영역과 그 주소 // Code 영역 printf("%llu [Code]\n", (unsigned long long)"I am a String."); // Data 영역 printf("%llu [Data]\n", (unsigned long long)&var_global_initialized); // BSS 영역 printf("%llu [BSS]\n", (unsigned long long)&var_global_uninitialized); // Heap 영역 char* var_dynamic = (char*)malloc(sizeof(char) * 100); printf("%llu [Heap]\n", (unsigned long long)var_dynamic); // Stack 영역 func_test(); return 0; } void func_test() { int var_local = 0; printf("%llu [Stack]\n", (unsigned long long)&var_local); }; 메모리 영역 별 간격이 너무 작게 출력되는데 올바르게 작성한게 맞을까요..?? 참조온라인 컴파일러 링크문자열 리터럴이 저장되는 메모리 영역 링크메모리 영역별 예제 코드 링크
- 미해결홍정모의 따라하며 배우는 C언어
swap 함수에서 printf문 질문있습니다
수업 내용의 프린트 구문은 void swap(int* u, int* v) { printf("%p %p\n", u, v); int temp = *u; *u = *v; *v = temp; } 이런식으로 되어있는데 u와 v에 &기호를 붙혀주면 a, b 와 주소가 다르게 나오는데 어떤 주소인지 잘 모르겠습니다..
- 해결됨홍정모의 따라하며 배우는 C언어
10.14강 11:11 질문이 있습니다.
int(*ptr_arr)[3];위 형태가 int [3] 의 배열을 가리키는 포인터라는 것은 이해했습니다. int arr[3] = { 1, 2, 3 }; int* ptr_arr_1 = arr; printf("%d\n", ptr_arr_1[1]); // 1) int (*ptr_arr_2)[3] = arr; printf("%d\n", ptr_arr_2[0]); // 2) printf("%d\n", ptr_arr_2[0][1]); // 3) printf("%d\n", (*ptr_arr_2)[1]); // 4)1)의 경우 지금까지 써왔기 때문에 왜 arr의 1번째 요소가 나오는지 이해했습니다.2)의 경우 printf 함수 인수가 int [3]이라는 경고가 나오고3), 4)의 경우 arr의 1번째 요소가 출력되는 것을 확인했습니다. int* ptr_arr_1 = arr; 은 1번의 배열 역참조 연산으로 배열 요소의 값에 접근할 수 있지만int (*ptr_arr_2)[3] = arr; 은 2번의 배열 역참조 연산으로 배열 요소의 값이 접근할 수 있는 것 같은데 가리키는 배열이 똑같은 1차원 배열인데도 왜 이런 차이가 발생하는 걸까요..??
- 미해결홍정모의 따라하며 배우는 C언어
char str[]과 char * str 의 차이는 무엇인가요?
22:16초에서 char str[]을 쓰시는데 평소에 []이런식으로 안에 아무것도 할당되어있지 않은 배열의 역할과 포인터와의 차이가 너무 궁금해서 질문드립니다. 포인터 알기를 겉핥기로 알고있어서요. 감사합니다!
- 해결됨홍정모의 따라하며 배우는 C언어
swap 함수 작성하기
홍 선생님께선 swap 함수에서 temp를 선언하실 때 정수형 자료형으로 선언하셨는데 저는 정수형 포인터 변수로 선언하고자 했어요.void swap(int* a, int* b){ int* temp = NULL; *temp = *a; *a = *b; *b = *temp; }이렇게 함수를 작성해서 코드를 실행하려고 하는데 빌드는 성공했지만 실행은 실패했어요.다만 함수를 아래처럼 고치면 정상적으로 작동하더군요.void swap(int* a, int* b){ int c; int* temp = &c; *temp = *a; *a = *b; *b = *temp;}혹시 첫 번째 코드에서 temp 변수의 주소를 NULL로 초기화 한 부분이 문제였을까요?