월 19,800원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결홍정모의 따라하며 배우는 C언어
2의 보수 방법에서 양수표현법
강의에서 설명해주신 2의 보수 방법에서, 양수를 표현하는 방법에 관해 질문이 있습니다. 강의에서 -5를 예로 드신 건 이해했는데, 반대로 5를 표현하려 할 때는 어떻게 되나요?5를 2진수로 변환->00000101(2)->보수:11111010(2)->더하기 1: 11111011(2)인데, 그럼 양수 5와 음수 -5의 구분이 안 되지 않나요?강의에서 첫 비트가 1이면 음수, 0이면 양수인 것으로 구분한다고 하셨는데, 8개 비트 앞에 부호에 해당하는 1비트를 더 둔다는 뜻인가요? 그러니까, (1/11111011->-5, 0/11111011->5) 이런 식으로 작동하는 건가요?좋은 강의 감사합니다.
- 미해결홍정모의 따라하며 배우는 C언어
프로그램 작성 중에 scanf 값을 따로 안써도 되는지에 대해
교수님께서 작성하신 강의답안에서 질문이 있습니다. 보면 scanf함수를 따로 쓰지 않고 status = scanf("%d", &num);만 입력하셨는데 이렇게 적어도 scanf함수가 동작하는 이유가 궁금합니다. 또, 이 윗줄 바로 위에 scanf함수를 따로 실행해도 상관없는지도 궁금합니다.
- 미해결홍정모의 따라하며 배우는 C언어
6.15초반 예제 scnaf 사용해서 만들면 어케 만들어야 될까요
저렇게 처음과 끝이 정해져 있는 게 아니라 scanf써서 사용자가 시작할 처음 단어와 몇 개까지 갈지, 몇 줄만들지 이런거요
- 해결됨홍정모의 따라하며 배우는 C언어
13분 03초, 39번째 줄 i =1이 왜
출력이 0으로 나오는건가요..? l은 2가 되는게 납득이 갑니다만 40번째 줄에서 i가 1이 감소하는 건가요??
- 미해결홍정모의 따라하며 배우는 C언어
15분경 질문
scanf 함수가 i의 값을 바꾼다고 하셨는데 그러면 처음에 i=0으로 정의가 됐다가 scanf 함수를 통과하면서 i가 바뀐다는 뜻인가요? 만약 그렇다면 뭐로 바뀌는지는 어떻게 아는 건가요?
- 미해결홍정모의 따라하며 배우는 C언어
Scanf 함수가 이상한 값을 내놓습니다.
end 변수에 K를 입력하니 K의 아스키 코드인 75가 안 나오고 -52가 뜹니다 ㅠㅠ
- 미해결홍정모의 따라하며 배우는 C언어
while(getchar() != '\n') continue;의 원리
while(getchar() != '\n') continue;가 입력 버퍼에 남아있는 개행문자들을 모두 읽어들이며 입력 버퍼를 클리어해주는 것이라고 알고 있는데 왜 그런지 원리를잘 모르겠어요getchar()에 들어가는 값이 줄바꿈 값이 아니면 다시 반복문으로 돌아가고, 줄바꿈이면 계속 한다는 뜻인 저while(getchar() != '\n') continue; 라는 코드가 어떻게 그런 기능을 하는 건가요?
- 미해결홍정모의 따라하며 배우는 C언어
내가 원하는 알파벳까지 출력하기
교수님께서 내신 문제 해설을 듣기 전 작성한 코드입니다. For 문 대신 while을 이용했는데요. 프롬포트 창에서는 컴파일러가 repeat 함수를 만난 이후부터는 진행되지 않습니다. 뭐가 문제인지 봐주실 수 있나요
- 해결됨홍정모의 따라하며 배우는 C언어
15.12강 질문이 있습니다.
#include <stdio.h> #include <stdalign.h> int main(void) { printf("Alignment of char = %zu\n\n", alignof(char)); char ca; printf("&ca : %p %lld\n", &ca, ((long long)&ca) % 8); printf("&ca : %p %lld\n", &ca, ((long long)&ca) % 16); printf("\n"); char _Alignas(int) cb; printf("&cb : %p %lld\n", &cb, ((long long)&cb) % 8); printf("&cb : %p %lld\n", &cb, ((long long)&cb) % 16); printf("\n"); char alignas(8) cc; printf("&cc : %p %lld\n", &cc, ((long long)&cc) % 8); printf("&cc : %p %lld\n", &cc, ((long long)&cc) % 16); return 0; } [결과]alignas(n)를 지정하면 주소가 n의 배수인 메모리 위치에 객체를 할당하도록 하는 것은 이해했습니다. 첫 번째 줄의 출력에서 따로 정렬을 지정하지 않은 ca는 정렬 값이 1인 것은 확인했습니다.그러면 ca의 주소를 8, 16으로 나눈 나머지가 1이므로&ca : 00000097AA4FF614 1&ca : 00000097AA4FF614 1형태의 출력이 나와야 할 것 같은데왜 4바이트로 정렬을 지정한 cb와 결과가 같은 것인지 잘 모르겠습니다..
- 미해결홍정모의 따라하며 배우는 C언어
while문에 {} 안치면 바로 밑에 있는 것만 반복하나요?
5.12 강의에서 while문에 {}을 안 썻는데 {}이 없을 경우 바로 밑에 있는 한줄만 조건에 부합하지 않을 때까지 반복하나요??
- 해결됨홍정모의 따라하며 배우는 C언어
강의 내용 중 주석 Cannot change heart. Can change ...
강의 20분 중반대부터 보이는 // Cannot change heart. Can change the elements of heart가 이해가 가지 않습니다.heart는 배열이여서 바꿀 수 있다고 생각했는데 (바로 뒤에 요소 수정 가능이라고 나와있긴 해서 헷갈림)// Cannot change head.를 의도했는데 잘못 표기된 것인지 아니면 heart라는 배열의 이름에 접근할 수 없다는 뜻인지 모르겠습니다.감사합니다
- 미해결홍정모의 따라하며 배우는 C언어
4분경 질문
사진처럼 오류가 뜨면서 디버그가 안 된다고 하는데 어디가 문제인지 잘 모르겠어요. 오류 내용 보면 저장 위치랑 관련 있는 것 같은데 이리저리 뭘 해봐도 잘 안 되네요
- 미해결홍정모의 따라하며 배우는 C언어
강의와 다름
화면과 똑같이 코딩을 했는데 실행을 하면 Hello, world가 뜨는 게 아니라 그냥 검은 빈 화면만 뜨는데 뭐가 잘못된 건가요? 마지막 부분에서 F10 눌러도 Hello, world가 뜨는 게 아니라 똑같이 그냥 빈 화면만 뜨네요.
- 해결됨홍정모의 따라하며 배우는 C언어
double d = 0.0;으로 초기화하는 이유
위에서 다른 값들은 입력할 때 초기화를 시키지 않았는데 double d만 값을 초기화하는게 궁금합니다. 제 생각을 말씀드리면 앞의 예제들을 실행시켰을 때 값을 입력하지 않았음에도 어떠한 값이 이미 출력되더라구요. 이게 혹시 초기화를 시키지 않아서 발생했던 문제들인가요??
- 해결됨홍정모의 따라하며 배우는 C언어
9분 48초 (*(parr + 1))[1] 이게 이해가 잘 안되네요
(*(parr + 1))[1]을 제가 해석해보자면parr은 arr0을 가리킨다. 거기에 1을 더하면 arr1을 가리키게 된다.거기에 *를 붙이면 arr1이 가리키는 arr1[0]을 가리키게 된다.여기에 [1]를 붙이면? arr1[0][1]을 가리키게 되나? 아니면 arr1[1]을 가리키게 되나? 아니면 arr1[1]이 되나?출력값이 5인걸 보면 맨 오른쪽인것 같은데(*(parr + 1))은 &arr1[0]이고 거기에 [1]을 붙인다는 게 정확하게 무슨 뜻 인가요?어떤 식으로 작동하는건지 이해가 잘 안되요. parr[0]은 &arr0[0]이고parr[0][0]은 arr0[0]이다.라는 것과 비슷하게 작동하는 건가요? 항상 좋은 답변 감사합니다.
- 해결됨홍정모의 따라하며 배우는 C언어
14.26강 연습문제 질문이 있습니다.
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <ctype.h> #include <stdlib.h> #include <stdbool.h> void update_string(char*, int(*)(int)); void ToUpper(char*); void ToLower(char*); void Transpose(char*); // TO DO : add a new menu int main(void) { char options[] = { 'u', 'l' }; int n = sizeof(options) / sizeof(char); // 함수 포인터의 배열 typedef void (*FUNC_TYPE)(char*); FUNC_TYPE operations[] = { ToUpper, ToLower }; printf("Enter a string\n>> "); char input[100]; while (scanf("%[^\n]%*c", input) != 1) printf("Please try again.\n>> "); printf("Choose an options:\n"); printf("u) to upper\n"); printf("l) to lower\n"); char option_choice; while(scanf("%[^\n]%*c", &option_choice) != 1) printf("Please try again.\n>> "); // 선택한 옵션에 따라 대문자/소문자로 변경 // options 배열을 순회하며 options에서 선택한 옵션의 index 추출 int option_choice_index = 0; for (int i = 0; i < n; ++i) { if (options[i] == option_choice) { option_choice_index = i; break; } } // 문자열 변경 함수 실행 update_string(input, operations[option_choice_index]); // 문자열 출력 puts(input); return 0; } // 문자열 전체를 대문자/소문자로 변경하는 함수 void update_string(char* str, int(*ptr_func)(int)) { char* arg1 = str; int(*arg2)(int) = ptr_func; (*ptr_func)(str); }; // 문자열 전체를 대문자로 변경하는 함수 void ToUpper(char* str) { char* arg3 = str; while (*str != '\0') { *str = toupper(*str); str++; } }; // 문자열 전체를 소문자로 변경하는 함수 void ToLower(char* str) { while (*str != '\0') { *str = tolower(*str); str++; } }; update_string 함수에서(*ptr_func)(str);를 실행할 때까지 str의 주소가 잘 잡힙니다.그런데 (*ptr_func)(str);를 실행해서 ToUpper 함수 안으로 진입하면 str의 주소가 잡히지 않는데 왜 이런지 잘 모르겠습니다..
- 미해결홍정모의 따라하며 배우는 C언어
8분 40초경 질문
int sum2d_2(int ar[][COLS], int row);에서 COLS 자리의 인덱스에 숫자를 적어주는 이유는ar이라는 포인터의 행의 사이즈는 int * (COLS 자리의 인덱스) 이기 때문이다.라고 해봤는데 이게 맞거나 비슷한 표현 일까요?제 표현이 틀린 것 같아 답변자 분이 이해를 할 수 없을 것 같기도 하네요.. ㅈㅅ함미다.
- 해결됨홍정모의 따라하며 배우는 C언어
6분 54초경 질문
그냥 그렇나 보다 하고 지나칠뻔한 걸 한번 의심을 하니 문제를 놓을 수가 없게 되었습니다. 1.int ar1[2][3] = { {1, 2, 3}, {4, 5, 6} };int* pt;pt = &ar1[0][0];for (int i = 0; i < 6; ++i)printf("%d %d ", pt[i], *(pt + i)); 2.int arr[2][3] = { {1, 2, 3}, {4, 5, 6} };int* parr[2];parr[0] = arr[0];parr[1] = arr[1];for (int i = 0; i < 2; ++i)printf("%p %p ", parr[i], *(parr + i)); 둘 다 똑같이 출력을 했는데 1번 예제는 값이, 2번 예제는 주소가 출력 되는 이유그러니까 parr[i]가 주소를 출력하니 pt[i]도 주소를 출력 해야 할 것 같은데 값을 출력하는 이유가 궁금합니다.parr은 포인터의 배열이고 pt는 포인터라서?parr의 자료형은 int (*)[3]이고 pt의 자료형은 int*라서?뭔가 연관이 있을 텐데 저는 어떤 연관이 있는 건지 쉽사리 연결 지을 수가 없더라구요.꼭 알려주셨으면 합니다. 항상 좋은 답변 감사합니다.
- 미해결홍정모의 따라하며 배우는 C언어
릴리즈모드 디버그모드 scnaf 오류
릴리즈 모드가 아니라 디버그 모드를 사용해서 i와j의 합을 볼려했는데 왜 디버그 모드상태에서 scanf를 사용하면 오류가 나나요??
- 해결됨홍정모의 따라하며 배우는 C언어
14.24강 09:54 질문이 있습니다.
앞에 말씀하신 부분 중 함수 실행의 결과로 배열을 반환할 수 없다고 하셨었는데 그러면 09:54에서 식별자 x2는 함수 포인터 배열의 포인터가 되는건가요???int(*x2[10])(int);