월 19,800원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결홍정모의 따라하며 배우는 C언어
qsort 함수 질문
qsort를 직접 구현하고싶어서 이것저것 시도하던중 의문점이 생긴게 몇게 있어서 질문을 남깁니다. 1. int arr[] = { 8, 2, 5, 3, 6, 11}; int compare(const void* first, const void* second) { if (*(int*)first > * (int*)second) return 1; else if (*(int*)first < *(int*)second) return -1; else return 0; } 의 함수에서 first와 second가 갖는 주소값이 이런식으로 second가 arr[0]의 주소값을 갖고 first가 arr[1]를 갖는데 qsort함수를 사용법을 검색했을때 첫번째 변수가 두번째 변수보다 클때 1을 반환하고 작을때 -1을 반환하면 오름차순으로 정렬된다고 나오는데 첫번째 변수의 값이 second 에 들어갈까요 ㅠ 2. qsort라는 함수를 검색했을때 분할정복이라는 알고리즘을 통해 구현되있다고 쉽게 찾아볼수 있었습니다. 그러나 막상 디버그를 돌리면 compare함수 안에서 후 이런식으로 가장 큰 값이 순차적으로 뒤로 가는걸 확인할수 있었는데 제가 찾아본 분할정복하고는 값이 정리되는 방식이 많이 달라서 혼란을 격고있습니다. qsort함수는 분할정복 알고리즘을 사용한거가 맞는건가요? 혹시 qsort함수가 어떤식으로 구현됐는지 확인할수 있는 방법도 알 수 있을까요?
- 미해결홍정모의 따라하며 배우는 C언어
scanf에 문자를 입력했을 때 아스키코드로 받지는 않는 건가요?
안녕하십니까 교수님, 강의 3:30 부근에서 status = scanf("%d", &num); 에서 문자를 입력받았을 때는 정수로 입력을 받을 수 없어 입력받은 변수의 갯수가 0이 된다고 하셨습니다. 제가 생각했을 때는 문자로 입력을 받아도 각각의 문자들에 대응하는 아스키코드로 변환되어서 정수로 입력을 받을 수 있지 않을까? 라는 생각이 드는데요, 어디가 틀린 건지 헷갈립니다. 아스키 코드에 상관없이 자료형이 다르므로 반환값이 0인 것인가요?
- 미해결홍정모의 따라하며 배우는 C언어
포인터 산술연산 질문
int main() { int arr[5] = { 1,2,3,4,5 }; int* ptr1, * ptr2, * ptr3; ptr1 = arr; ptr3 = ptr1 + 4; printf("%p, %d %p\n", ptr3, *ptr3, &ptr3); return 0; } 위 코드에서 ptr3 = ptr1 + 4 라는 점이 제가 이해하기로는 ptr3이 ptr1의 첫번째 주소에서 (int 크기만큼) 4칸 이동한 주소이다 라고 이해했습니다 그래서 ptr3[0]이나 *ptr3을 출력해보았을때 5가 나오고 ptr3[1]이나 ptr3[2] 등을 출력해보면 쓰레기값이 나왔습니다 여기서 궁금한점이 ptr1은 배열의 형식을 갖고있는데 ptr3도 배열의 형식을 갖고있는지가 궁금합니다 단순히 ptr1 + 4의 주소만 받은건지 아니면 배열의 형식도 같이 받은건지 궁금합니다
- 미해결홍정모의 따라하며 배우는 C언어
버퍼의 정의가 정확히 뭔지가 좀 헷갈리네요
버퍼가 어떤 이유로 쓰인다는건 알겠는데 정작 정의가 말이 없으셔서... 제가 인터넷에서 조사한결과 버퍼란 추가로 들어오는 입력을 임시저장 하는 메모리 공간 정도로 정의가 가능할것 같은데... 제가 생각하는게 맞나요?
- 미해결홍정모의 따라하며 배우는 C언어
이번 예제의 마지막 부분이 잘 이해가 안가네요.
4분 28초 부분에서 28번째줄 설명해주시는 부분이 잘 이해가 안되네요. 교수님의 예제에서는 7번째 줄에서 사용자의 입력을 c = getchar()로 받아왔으니까 사용자의 입력은 c 에 담겨있죠. 그러면 28번쨰 줄은 while (c != '\n') continue; 가 되어야 하는거 아닌가요? 왜28번쨰 줄을 while(getchar() != '\n') 으로 써야하는건가요? while(getchar() != '\n') 로 쓰면 getchar()를 사용자가 엔터를 한번 더 누르기 전까지 7번째 줄로 돌아가지 않아야 하지 않나요?
- 미해결홍정모의 따라하며 배우는 C언어
error check
Wrong input을 한번 입력하고 두번째에 u, l, t를 입력하면 또 wrong input이 뜹니다. 한번 확인해주시면 감사하겠습니다!
- 미해결홍정모의 따라하며 배우는 C언어
(double)숫자f에 관해 질문이 있습니다.
안녕하세요. 강의보면서 10:20 부분쯤에 d=(double)2.14f; 에서 해당부분에 커서를 올렸을 때 float으로 나오는데 float이 아닌가요? 그리고 (double)숫자f로 작성했을때 double이 우선인가요 float이 우선인가요?
- 해결됨홍정모의 따라하며 배우는 C언어
1번 예제 관련 질문이 있습니다
알파벳이랑 줄 갯수를 scanf()로 입력받아서 해보려고 하는데 코드 순서를 바꿔서 count를 먼저 입력받게 하면 후에 alphabet은 입력받지 않고 넘어가버립니다.(사진의 코드처럼 alphabet을 먼저 입력받으면 정상적으로 실행됩니다) f11로 한줄씩 실행해봐도 이유를 모르겠습니다
- 해결됨홍정모의 따라하며 배우는 C언어
while문 indent 질문입니다
while문을 사용할 때 while(expression) statement 이런식으로 while(expression){ expression } 이렇게 중괄호 없이 사용해도 되는건가요??
- 미해결홍정모의 따라하며 배우는 C언어
1.13 강의에서 a.exe 오류가 뜨시는 것을 보여주셨는데 저는 오류가 안 뜨고 작동이 되는데 왜 그런건가요?
(사진)
- 미해결홍정모의 따라하며 배우는 C언어
escape sequence \\ 질문입니다
다른건 다 선생님과 똑같이 출력이되는데 \\만하면 W중간에 줄그어진 문자로 출력되는데 왜이럴까요 ㅠㅠ
- 미해결홍정모의 따라하며 배우는 C언어
signed int의 오버플로우 질문입니다
8비트를 예를 들어 8비트의 최댓값이 127이므로 +1을 하면 1000/0000이 되야하는데 부호가있는 8비트 정수에서는 앞이 1이면 안되지 않나요? 근데 컴파일해보니 1000/0000이렇게 뜨는데 이건 부호가있는 정수에서는 -128아닌가요? 헷갈립니다( 32비트를 8비트로 줄여서 말씀드립니다)
- 미해결홍정모의 따라하며 배우는 C언어
객체에 대하여 질문 드립니다.
강의 내용 중, 메모리 공간과 주소, 객체지향에 대한 언급이 나와 질문 드립니다. 다른 언어에 대한 이야기이긴 하지만, 제가 파이썬부터 공부하여 이로 예시를 들자면 a=1 print(id(a)) a+=1 print(id(a)) 파이썬에서는 위 결과 a의 주소값이 다르게 나오고, c 에서는 int a = 1; printf("%d", &a); a += 1; printf("%d", &a); 위 a의 주소값이 같게 나오는데, 파이썬은 int 1 객체, int 2 객체가 각자 다른 객체로 다른 주소 가지고 변수명은 그걸 가르키는 라벨, c 는 변수명이 메모리 주소를 직접 가르키는 형태. 라고 이해한 것이 맞는지 여쭙고 싶습니다. 위의 차이가 맞다면, 그게 객체지향과 객체지향이 아님의 차이인건가요? 파이썬으로 먼저 변수의 개념을 접하여 C에서의 변수의 개념에 혼동이 있는 듯 합니다ㅠㅠ
- 미해결홍정모의 따라하며 배우는 C언어
%lld 형식지정자 질문 드립니다!
%lld 가 long long int의 자료형을 받을 수 있는 형식 지정자로 기억하는데, long long int는 8바이트 = 64비트의 사이즈를 가지니 signed의 경우 2^63인 9223372036854775807 까지 표현이 되어야하는 것으로 이해하고 있습니다. 허나 강의 내용 마지막에서 x86 환경 %lld 에서 INT_MAX + 1 을 출력했을때 오버플로우가 발생하는 이유를 알고 싶습니다! 32비트 환경에서는 64비트 크기인 long long int 자체가 지원이 안되고, 32비트의 모든 자료형의 최대 크기가 32비트로 제한이 되는건가요? 이해에 도움을 주시면 감사하겠습니다!
- 미해결홍정모의 따라하며 배우는 C언어
size_t 에 관한 질문 드립니다
size_t 가 시스템에 따라 32비트 : unsigned int 혹은 64비트 : unsigned long long 이 될 수 있다고 이해했습니다. 정확한 정의가 궁금하여 찾아보았더니, '' 해당 시스템에서 어떤 객체, 값을 포함할 수 있는 최대 크기를 표현한다. '' 라고 하는데요. 이 정의가 맞나요? 이 정의가 맞다면, size_t가 unsigned int 를 반환하는 경우 해당 시스템의 자료형 최대 크기가 32비트인건지.... 그렇다면 그 환경은 unsigned long long 이라는 자료형을 사용할 수가 없는 환경인건지.... 이해가 부족하여 질문드립니다.
- 미해결홍정모의 따라하며 배우는 C언어
printf의 형식지정자 %f는 float 자료형 아닌가요?
3.1강에서 float 자료형의 저장공간은 4바이트라고 하셨었습니다. 그런데 강의중 %f의 크기는 8바이트라고 잡고 설명해주시는데요. 형식지정자 %f는 float가 아닌가요? 저는 %f가 float을 나타내서 4바이트 만큼 읽어들이는 형식지정자라고 생각을했거든요.
- 미해결홍정모의 따라하며 배우는 C언어
출력결과값이 이상하네요
밑에 Han Jo 님과 같은 현상인거 같은데 #include <stdio.h> int main() { /* Arrays of Character Strings */ const char* mythings[5] = { "Dancing in the rain", "Couting apples", "Watching movies with friends", "Writing sad letters", "Studying the C language" }; char yourthings[5][40] = { "Studying the C++ language", "Eating", "Watching netflx", "Walking around till dark", "Deleting spam emails" }; const char* temp1 = "Dancing in the rain"; const char* temp2 = "Studying the C++ language"; printf("%s %u %u\n", mythings[0], (unsigned)mythings[0], (unsigned)temp1); printf("%s %u %u\n", yourthings[0], (unsigned)yourthings[0], (unsigned)temp2); printf("\n"); printf("\n"); printf("%-30s %-30s\n", "My Things:", "Your Things:"); for (int i = 0; i < 5; i++) printf("%-30s %-30s\n", mythings[i], yourthings[i]); printf("\nSizeof Mythings: %zd Sizeof tour Yourthings: %zd\n", sizeof(mythings), sizeof(yourthings)); printf("\n"); printf("\n"); for (int i = 0; i < 100; i++) printf("%c", mythings[0][i]); printf("\n"); printf("\n"); for (int i = 0; i < 200; i++) printf("%d ", (int)yourthings[0][i]); printf("\n"); printf("\n"); for (int i = 0; i < 200; i++) printf("%c", yourthings[0][i]); printf("\n"); printf("\n"); // Not a good idea to take advantage of this property return 0; } 31번째 줄 printf("%-30s %-30s\n", "My Things:", "Your Things:"); 이 명령문이 있고 없고 const char* mythings[5] 배열이 들어가 있는 값이 차이가 있네요 값이 31번째 줄을 주석처리를 하면 const char* mythings[5] 의 주소배열이 이런식으로 들어가 있고 31번째 줄을 주석 처리를 안하면 const char* mythings[5] 의 주소배열의 값이 이런식으로 %c 와 %d가 중간중간 '\0'값과 바뀌어 들어가네요 단순한 오류라고 봐도 괜찮을까요? 아니면 제가 이해를 못한부분이 있는걸까요?
- 해결됨홍정모의 따라하며 배우는 C언어
버퍼 비우기 관련해서 질문드립니다.
안녕하세요? 강의를 세세하게 해주시는 덕분에 열심히 듣고 있습니다! 아래는 버퍼 비우기를 이해하기 위해 제가 짜본 코드인데 만약 이게 맞다면, scanf와 getchar()가 버퍼를 공유하고 있는 원리인가요? int main() { char c; int a; scanf("%c", &c); // 'asdf' 입력함 printf("%c \n", c); //'a'표시 (버퍼에서 'a'가 c에 대입) a = getchar(); //'sdf' (scanf에서 c에 대입된 'a'사라짐) putchar(a); //'s'표시('sdf'의 첫글자) return 0; }
- 해결됨홍정모의 따라하며 배우는 C언어
console창 설정 관련해서 질문드립니다
안녕하세요 교수님 강의 1.9 컴파일러와 링커 영상을 보던 중 콘솔창 설정 관련해서 질문 드리고 싶습니다. ctrl+f5를 통해 디버깅 한 후 교수님의 콘솔창은 Hello, World! D:\githun-repository\TBC\~~~~~~~~~~ code 0. Press any key to close this window . . . 인 반면 제 콘솔창은 이게 끝 입니다. 중간에 D:\githun-repository\TBC\~~~~~~~~~~ code 0. 가 빠져 있는데 이 설정을 어떻게 해결해야 할지 모르겠습니다. 옛날에 공부하며 D:\githun-repository\TBC\~~~~~~~~~~ code 0. 이걸 삭제하는 방법에 대해서 알게 되어서 삭제 했던것 같은데 다시 나타나게 하고 싶은데 인터넷에 검색해봐도 이 문제에 대한 해결책은 나오지 않아 질문드립니다
- 미해결홍정모의 따라하며 배우는 C언어
입력된 코드 색상
제 화면에는 교수님의 코드와 달리 글짜들의 색상이 모두 회색으로 일정한데 함수나 연산자등의 색상을 다르게 하려면 따로 설정을 해줘야 하는건아요??