묻고 답해요
156만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨독하게 되새기는 C 프로그래밍
큐의 배열을 넘겨도 정상작동합니다
예제를 거의 똑같이 구현했는데 환영큐로 구현을 한게 아닌 배열형태의 큐로 사이즈를 100을 줬는데 100개를 넘게 입력해도 정상작동을 합니다 왜 이런건가요?
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
문제 관련 추가질문입니다.
강의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를 명시해줬기 때문에 에러가 나는걸까요? 뭔가 명확히 갈증이 해소되지 않는느낌이라 답답하네요...ㅠ
-
미해결홍정모의 따라하며 배우는 C언어
scanf 와 const 변수의 관계
안녕하세요 교수님의 scanf 강의에서 입력받은 값의 주소를 이용하여 변수의 값을 업데이트하는 과정은 이해했습니다.다만 상수의 경우 컴파일러에게 해당 값은 바꿀 수 없다 라고 알려주는것으로 알고 있는데 scanf 함수를 통해서 값이 바뀌는걸 확인했습니다, 혹시 별도의 이유가 있을까요?
-
해결됨독하게 시작하는 C 프로그래밍
콘솔(Console)에 대하여 질문
안녕하세요 강의 정말 잘 보고 있습니다!Console과 관련하여 질문이 생겨 올립니다! 제가 나름대로 정의한 Console의 정의는 아래와 같습니다 과거에는 Console이라는 하드웨어가 존재하였다하지만 오늘날 말하는 Console은 물리적인 Console을 의미하는것보다는 모니터, 키보드, 마우스와 같이 시스템과 상호작용하는 입출력 환경 전체를 의미한다혹은 CLI를 통해 OS와 직접 상호작용 할 수 있는 Console(Terminal) Application을 의미하기도 한다( Application 단에 구현 ) 질문 ( 그림 참고 )"Console을 추상화한 것이 stdin, stdout다" 의 의미는 Console환경, 즉 모니터와 키보드를 추상화한것이 모니터는 stdout, 키보드는 stdin 파일이라고 이해해도 되는걸까요?해당 내용을 그림으로 정리해 보았습니다
-
해결됨Windows 시스템 프로그래밍 - 기본
강사님 dll 지연로딩 관련하여 질문 드립니다
강의 내용을 기반으로 제프리 리처 <Windows via C/C++> 을 읽으며 생긴 질문이 있어서 여쭤봅니다.5판 번역본 기준 730p 입니다. /DelayLoad:MyDll.dll <- 지연로딩할 dll을 사용하면 링커에게 "실행 모듈의 임포트 섹션으로부터 MyDll.dll 파일을 제거하여 프로세스를 초기화할 때 해당 DLL 을 암시적으로 로드하지 못하도록 한다. 라고 되어 있습니다. (730페이지 상단) 이후에 지연로드 된 함수가 호출되었을 때 해당 함수를 익스포트하고 있는 DLL 이 존재하지 않으면 __delayLoadHelper2() 는 exception 을 던진다고 나와있습니다. (730페이지 3번째 문단) 궁금한 점은 "임포트 섹션에서 MyDll.dll 제거할 때 해당하는 dll 이 없으면 링크타임이나 로드할 때 에러를 발생시키면 되는데 왜 굳이 런타임에 exception 을 던지는지?" 궁금합니다. 항상 유익한 강의 감사합니다 😄
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
2024년 2회 17번 재귀함수
재귀 함수로 계속 돌면 Char c = a 만 남고 if(idx <0) return""; 으로 빠져나오는거 아닌가요?ㅠidx : 0, c: a,seen[a]:falseidx : 1, c: b,seen[b]:false어떻게 나오는지 모르겠습니다.
-
해결됨독하게 되새기는 C 프로그래밍
캐너리비트에 관하여 질문
메모리의 주소값이 int자료형이면 4씩 증가하면서 저장될것같은데 캐너리비트를 넣는다면 더 증가하게 될텐데 릴리즈에서는 적용이 안되면 릴리즈모드에서는 스택메모리주소값이 4씩 증가하게 되는건가요? 그럼 디버그모드에서는 1mb만큼의 스택 메모리를 정확히 사용한다고 가정했을때 캐너리비트가 더 차지하게 되므로 오류가 발생하는건가요?64비트에서는 자동변수를 메모리에 저장할때 메모리값이 점점 커지는데 32비트와는 반대인건가요?
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
이번 강의 내용이 좀 많이 어렵네요..
이번 강의부분이 이해도가 너무 부족한거 같아서 두번정도 돌려들었는데도 통 이해가 안갑니다..우선 9분에 순서를 보자면main의 start를 먼저 출력하고ElectricCar의 생성자(이부분을 c에선 함수라고 했던가요..?)를 불러오고 extends의 car를 불러온 후 Car Created를 출력ElectricCar의 Electric Car created를 출력...End 이렇게 순서가 되나요?... 또한 startEngine는 왜 부모고 chargeBattery는 왜 자식인지 이 부분도 통 이해가 안가구요.. 또한 메서드는 이름이 같고 생성자는 이름이 다르다는 건 알겠습니다. 그 외 기능적으로는 차이가 없는건가요? 이전 강의의 if나 for문 같은경우엔 정말 쉽게 이해하면서 넘어갔는데 상속부분 들어오면서 이해도가 확 떨어져버리네요..
-
미해결홍정모의 따라하며 배우는 C언어
링크 오류
강의 중 링커가 저절로 연결되는 변수를 찾아준다고 말씀하셨는데 작성한 코드대로 작동하지 않습니다. 저 밑에 있는 두 개의 오류가 해결이 안 됩니다.
-
해결됨독하게 시작하는 C 프로그래밍
파일 입/출력 시 관여하는 컴퓨터 요소들 질문
안녕하세요 널널강사님! 우선 좋은 강의에 감사인사드립니다. 파일 입/출력 관련해서 질문이 있는데요! 파일 입/출력이 수행되는 과정에서 이 '과정'에 조금이라도 관여하는 컴퓨터 요소들(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 정도만 사용한다고 보면 될까요? 약간 질문이 난해할 수 있을 것 같은데.. 답변 주시면 추가로 궁금한 점은 재질문 드리겠습니다!
-
미해결홍정모의 따라하며 배우는 C언어
구조체 파일과 함수를 헤더파일에 선언할 때 질문입니다.
struct 파일에 저장되어있는 문자열을 파일 스트림 fr로 옯긴 후, 그걸 다시 struct 파일로 옮기는 내용입니다. 보기 복잡해서 헤더파일로 나눈 후 정리를 하고 싶은데, header.h와 header.c로 나누어서 각각 함수의 프로토타입과 바디를 적어주었는데, 이후 어째서인지 main.c(소스.c)에 선언되어있는 변수를 인식하지 못하고 컴파일 에러가 나옵니다. 이 경우, 바디가 적힌 header.c에는 해당 변수들을 전부 다시 선언해줘야하나요? 혹은 main.c에 있는 변수나 함수에게 extern을 첨가해야 할까요?
-
해결됨독하게 시작하는 C 프로그래밍
동적 배열을 만들 때 realloc을 사용하나요 보통?
원래는 malloc하고 memcpy를 모를때는 반복문으로 복사하고, 이후 free하고 다시 새로 malloc한 주소값을 대입하였습니다.이번 강의에서 realloc을 배우고 이렇게 바꿀 수 있었습니다.그러면 실제로 동적 배열 만들때는 주로 realloc을 사용할 것 같은데, 강사님께서 realloc을 쓸일이 거의 없다고 하셨습니다. 설명해주신 미리 할당을 받아두고 memory pooling을 구현하기 때문인가요?아니면 대부분 동적이 아닌 예상할 수 있는 수치의 고정된 크기로 잡을 수 있기 때문에 realloc할 일 조차 없기 때문인가요? 그도 아니면 c에도 동적 배열을 사용하기 위한 라이브러리가 있어서 인가요? 항상 양질의 강의 제공에 감사드립니다.
-
해결됨독하게 되새기는 C 프로그래밍
상수화된 문자열에 질문있습니다
안녕하세요 강의를 잘 듣고있는 수강생입니다 강의에서 쓰신것처럼 Hello World같이 문자열을 변수에 저장하면 실행 바이너리 파일에 저장되있는데 모든 Hello World는 모두 같은 메모리값을 가지는건가요? 그럼 만약 Hello World에 !를 하나 붙일경우 새롭게 할당이 되나요?
-
해결됨독하게 C를 배운 사람을 위한 선형 자료구조
Event Loop
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으로 하드코딩 할때는 컴파일이 잘되는데 서로 다른 결과가 나오는 이유가 궁금합니다.
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
비교연산자와 반복문+조건문 문제 풀이 강의 질문이요.
13:05부터 약간 문제풀이가 이해가 안 되어가지구요. 1 2 3 4 5 6 7 8 9 10 int=isum=0 첫번째 if문 sum+=i*i; i%2 == 1 -> 2로 나누어서 나머지가 1값이 나오면 곱셈하라는 이야기이죠? 그러면 홀수인 1 3 5 7 9는 (1*1, 3*3, 5*5, 7*7, 9*9) 하라는 이야기이네요? 두번재 else 에서는 sum-= i; -> 음수값 붙이라는 이야기인가요? 그러면 짝수는 (-2, -4, -6, -8, -10) 이라는 이야기이네요? 거기서 1 2 3 4 5 6 7 8 9 10처음 sum 값은 0이니 홀수는 1*1해서 1값이 나온거고다음 짝수는 첫번째 sum 값인 1*1 에서 -2를 더해서 -1값이 나온거고 그래서 1 2 3 4 5 6 7 8 9 101 -1 8 4 29 23 72 64 145 135(1*1) = 1{(1*1) = 1} -2 = -1(3*3)-1 = 8{(3*3)-1 = 8} -4 = 4이렇게 순서대로 이해하면 되나요? 이게 맞는건가요? 비전공자라 이해가 잘 안되서 여쭙니다. 감사합니다.
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
포인터 강의와 더불어서 24년2회 기출문제 swap 낚시문제 질문있어요
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 프로그래밍
%d와 %d 사이에 공백이 없다는 점에 주의
문자, 정수 입력 개행문자 제거 부분입니다.scanf_s("%d %d", &x, &y);scanf_s("%d%d", &x, &y);음 이게 공백이 있든 없든 둘다 똑같이 동작하는데 무슨 의미가 있는거죠??
-
미해결홍정모의 따라하며 배우는 C언어
cleanup() 함수 부분에서 문제가 발생하는데 해결법을 모르겠어요
#define CRTSECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>#define SLEN 81struct namect{ char* fname; char* lname; int letters;};void getinfo(struct namect*); //allocate memoryvoid makeinfo(struct namect*);void showinfo(const struct namect*);void cleanup(struct namect*); // free memory when doneint main(void){ //구조체의 멤버로 할당 메모리를 사용하기 //할당 메모리를 가리키는 포인터를 구조체의 멤버로 사용 struct namect p = { "Gil DONG","Hong",SLEN }; //char buffer[SLEN] = { 0, }; //int f2 = scanf("%[^\n]%*c", buffer); //p.fname = (char*)malloc(strlen(buffer) + 1); //null character 자리 1개 추가. //if (p.fname != NULL) // strcpy(p.fname, buffer); //printf("%s %s\n", p.fname, p.lname); getinfo(&p); makeinfo(&p); showinfo(&p); cleanup(&p); return 0;}void getinfo(struct namect* adr){ char buffer1[SLEN] = { 0. }; char buffer2[SLEN] = { 0, }; printf("input your first name:\n>>"); int f1 = scanf("%[^\n]%*c", buffer1); if (f1 != 1) printf("Wrong input!\n"); else { adr->fname = (char*)malloc(strlen(buffer1 + 1)); if (adr->fname != NULL) strcpy(adr->fname, buffer1); else printf("Malloc Failed!!\n"); } printf("input your last name:\n>>"); int f2 = scanf("%[^\n]%*c", buffer2); if (f2 != 1) printf("Wrong input!\n"); else { adr->lname = (char*)malloc(strlen(buffer2 + 1)); if (adr->lname != NULL) strcpy(adr->lname, buffer2); else printf("Malloc Failed!!\n"); }}void makeinfo(struct namect* adr){ adr->letters = strlen(adr->fname) + strlen(adr->lname);}void showinfo(const struct namect* adr){ printf("Hi, %s %s. Your name has %d characters.", adr->fname, adr->lname, adr->letters);}void cleanup(struct namect* adr){ free(adr->fname); free(adr->lname);}윗 분이 남겨주신 질의응답으로 해결 가능할 것으로 생각했으나 step over로 찍어봐도 free()에서 자꾸만 문제가 발생합니다...
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
배열길이 부분에 질문있어요
8:29초 부분입니다. b=a[:3] 이면 배열주소 0123을 출력하는게 아니라 3까지(012) 라고 봐야하는건가요?c=a[4:6]도 마찬가지로 45까지만 출력하는건가요?
-
미해결홍정모의 따라하며 배우는 C언어
커리큘럼 관련 질문
안녀하세요 맨 마지막 따라하며 배우는 프로그래밍에서 C -> 코딩수학 C+ ->>> 딥러닝 순으로 나열 해 주셨는데 이 순서가 최적의 커리큘럼으로 정해진 순서로 이해하면될까요??