강의13분대 관련 질문입니다. public void paint() { System.out.print("A"); draw();} 여기서 draw();를 this draw(); 로 수정하게 되면 자식 draw가 아닌 부모 draw를 불러오나요? 강의 14분대 문제 질문입니다. A b = new B(1)을 통해 자식 클래스에서 public B(int i)를 불러왔으면 부모 클래스에서도 public A(int i)를 불러와야 하는것이 아닌가요? 이전 강의에서 파라미터가 있는 생성자 car(a,b)예제를 들고 설명을 해주실 때 그렇게 이해를 했는데 무슨차이인지 통 모르겠네요.. 17분대 specialDraw가 오류 나는 이유가 정확히 궁금해요 A b = new B(1); 을 통해 업캐스팅을 통해 B를 명시해줬기 때문에 에러가 나는걸까요? 뭔가 명확히 갈증이 해소되지 않는느낌이라 답답하네요...ㅠ
안녕하세요 교수님의 scanf 강의에서 입력받은 값의 주소를 이용하여 변수의 값을 업데이트하는 과정은 이해했습니다. 다만 상수의 경우 컴파일러에게 해당 값은 바꿀 수 없다 라고 알려주는것으로 알고 있는데 scanf 함수를 통해서 값이 바뀌는걸 확인했습니다, 혹시 별도의 이유가 있을까요?
안녕하세요 강의 정말 잘 보고 있습니다! Console과 관련하여 질문이 생겨 올립니다! 제가 나름대로 정의한 Console의 정의는 아래와 같습니다 과거에는 Console이라는 하드웨어가 존재하였다 하지만 오늘날 말하는 Console은 물리적인 Console을 의미하는것보다는 모니터, 키보드, 마우스와 같이 시스템과 상호작용하는 입출력 환경 전체를 의미한다 혹은 CLI를 통해 OS와 직접 상호작용 할 수 있는 Console(Terminal) Application을 의미하기도 한다 ( Application 단에 구현 ) 질문 ( 그림 참고 ) "Console을 추상화한 것이 stdin, stdout다" 의 의미는 Console환경, 즉 모니터와 키보드를 추상화한것이 모니터는 stdout, 키보드는 stdin 파일이라고 이해해도 되는걸까요? 해당 내용을 그림으로 정리해 보았습니다
강의 내용을 기반으로 제프리 리처 <Windows via C/C++> 을 읽으며 생긴 질문이 있어서 여쭤봅니다. 5판 번역본 기준 730p 입니다. /DelayLoad:MyDll.dll <- 지연로딩할 dll 을 사용하면 링커에게 "실행 모듈의 임포트 섹션으로부터 MyDll.dll 파일을 제거하여 프로세스를 초기화할 때 해당 DLL 을 암시적으로 로드하지 못하도록 한다. 라고 되어 있습니다. (730페이지 상단) 이후에 지연로드 된 함수가 호출되었을 때 해당 함수를 익스포트하고 있는 DLL 이 존재하지 않으면 __delayLoadHelper2() 는 exception 을 던진다고 나와있습니다. (730페이지 3번째 문단) 궁금한 점은 "임포트 섹션에서 MyDll.dll 제거할 때 해당하는 dll 이 없으면 링크타임이나 로드할 때 에러를 발생시키면 되는데 왜 굳이 런타임에 exception 을 던지는지?" 궁금합니다. 항상 유익한 강의 감사합니다 😄
이번 강의부분이 이해도가 너무 부족한거 같아서 두번정도 돌려들었는데도 통 이해가 안갑니다.. 우선 9분에 순서를 보자면 main의 start를 먼저 출력하고 ElectricCar의 생성자(이부분을 c에선 함수라고 했던가요..?)를 불러오고 extends의 car를 불러온 후 Car Created를 출력 ElectricCar의 Electric Car created를 출력 . . . End 이렇게 순서가 되나요?... 또한 startEngine는 왜 부모고 chargeBattery는 왜 자식인지 이 부분도 통 이해가 안가구요.. 또한 메서드는 이름이 같고 생성자는 이름이 다르다는 건 알겠습니다. 그 외 기능적으로는 차이가 없는건가요? 이전 강의의 if나 for문 같은경우엔 정말 쉽게 이해하면서 넘어갔는데 상속부분 들어오면서 이해도가 확 떨어져버리네요..
안녕하세요 널널강사님! 우선 좋은 강의에 감사인사드립니다. 파일 입/출력 관련해서 질문이 있는데요! 파일 입/출력이 수행되는 과정에서 이 '과정'에 조금이라도 관여하는 컴퓨터 요소들(CPU, RAM, Kernel, ...)이 무엇인지가 궁금한데요. 예를 들어, 아래와 같은 예졔 소스코드를 제가 디버그 모드로 실행해보았는데요.(참고로 MacOS에서 clang 컴파일러를 사용) #include <stdio.h> int main(void) { FILE* fp = NULL; fp = fopen("../TEST.txt", "w"); if (fp == NULL) { puts("Error: Failed to open file"); return -1; } fprintf(fp, "Hello"); fclose(fp); return 0; } 어쨌건 위 소스코드가 하는 일은 "TEST.txt" 라는 파일을 생성하고 개방한 뒤, 해당 파일에 "Hello" 라는 문자열을 쓰는 로직이잖아요? 하지만 소스코드 레벨에서는 어쨌건 fp 라는 구조체 포인터를 할당하고 하는 과정에서 메모리(엄밀히 말하면 가상 메모리)를 사용하게 되고 있구요! 그러면 위 함수같이 순수하게 I/O 동작만 수행할 경우는 CPU는 전혀 관여하지 않고 유휴 상태라고 보면 되나요? 흔히, I/O Bound 작업에서는 CPU가 관여하는 부분이 없기 때문에 비동기로 처리한다고들 하는데.. 이 말은 I/O 작업에서는 CPU가 하나도 사용되지 않고 메모리와 파일 시스템과 상호작용하는 Kernel 정도만 사용한다고 보면 될까요? 약간 질문이 난해할 수 있을 것 같은데.. 답변 주시면 추가로 궁금한 점은 재질문 드리겠습니다!
struct 파일에 저장되어있는 문자열을 파일 스트림 fr로 옯긴 후, 그걸 다시 struct 파일로 옮기는 내용입니다. 보기 복잡해서 헤더파일로 나눈 후 정리를 하고 싶은데, header.h와 header.c로 나누어서 각각 함수의 프로토타입과 바디를 적어주었는데, 이후 어째서인지 main.c(소스.c)에 선언되어있는 변수를 인식하지 못하고 컴파일 에러가 나옵니다. 이 경우, 바디가 적힌 header.c에는 해당 변수들을 전부 다시 선언해줘야하나요? 혹은 main.c에 있는 변수나 함수에게 extern을 첨가해야 할까요?
원래는 malloc하고 memcpy를 모를때는 반복문으로 복사하고, 이후 free하고 다시 새로 malloc한 주소값을 대입하였습니다. 이번 강의에서 realloc을 배우고 이렇게 바꿀 수 있었습니다. 그러면 실제로 동적 배열 만들때는 주로 realloc을 사용할 것 같은데, 강사님께서 realloc을 쓸일이 거의 없다 고 하셨습니다. 설명해주신 미리 할당을 받아두고 memory pooling 을 구현하기 때문인가요? 아니면 대부분 동적이 아닌 예상할 수 있는 수치의 고정된 크기 로 잡을 수 있기 때문에 realloc할 일 조차 없기 때문인가요? 그도 아니면 c에도 동적 배열을 사용하기 위한 라이브러리 가 있어서 인가요? 항상 양질의 강의 제공에 감사드립니다.
안녕하세요 강의를 잘 듣고있는 수강생입니다 강의에서 쓰신것처럼 Hello World같이 문자열을 변수에 저장하면 실행 바이너리 파일에 저장되있는데 모든 Hello World는 모두 같은 메모리값을 가지는건가요? 그럼 만약 Hello World에 !를 하나 붙일경우 새롭게 할당이 되나요?
Event Loop 함수에서 함수포인터 배열를 사용하여 Lookup 테이블 구조로 변경 하는 도중에 에러가 발생하여 질문 남깁니다! void (*EventFunc[EVENT_COUNT])(void) = { 0, AddNewUser, SearchByName, SearchByAge,PrintList, SearchByNameToRemove }; 위 코드와 같이 EVENT_COUNT 를 #define EVENT_COUNT 6 매크로로 정의 했을때 오류가 발생 합니다. void (*EventFunc[6])(void) = { 0, AddNewUser, SearchByName, SearchByAge,PrintList, SearchByNameToRemove }; EVENT_COUNT를 매크로로 정의 하지 않고 6으로 하드코딩 할때는 컴파일이 잘되는데 서로 다른 결과가 나오는 이유가 궁금합니다.
29분 포인트 강의를 보다보니 24년2회 swap 낚시문제가 떠올라서 질문드립니다. void swap(){ int temp; temp =a; a = b; b = temp; } int main(){ int a = 11; int b = 19; swap(); 기출2회 일부 추출인데요.. 해당 스왑부분을 보면 포인터변수를 준 것 외엔 차이가 없어 보입니다. 위 기출의 경우엔 왜 스왑이 될 수 없는지 부연설명이 있으면 이해가 빠를 것 같아요! (스왑 함수에서 temp값에 a넣어주고 a에 b를 대입하고.. 포인터변수 외엔 차이를 못느끼겠습니다.)
C#,C++ 관련 코드를 공부하기 위해서 비주얼 스튜디오 2019 버전을 다운로드 하려고 하는데 다운르도 홈페이지 들어가니깐 community 버전 다운로드 버튼이 활성화가 되어있지 않던데 혹시 다른 방법 아시는 분들 있는지 싶어서 글 작성해 봅니다 !!! 부탁드리겠습니다 ㅠㅠ