묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결독하게 시작하는 C 프로그래밍
scanf("%d\n") 의미
강의를 여러번 봐도 이 부분에 대한 설명이 이해가 안되어서 되도록이면 자제했던 AI의 도움을 받았습니다.그 결과 알아낸 내용은 다음과 같습니다.scanf()에서 "%d\n" 의 의미는“모든 공백(스페이스, 탭, 개행)을 계속 건너뛰고,그 다음 ‘공백이 아닌 입력’이 나올 때까지 기다려라”입니다.그러니까 엔터를 치면 또 공백이 입력되니까 계속 대기상태가 되는 겁니다. 이 부분은 강사님 설명이 많이 부족했다고 생각합니다.여러 강의들을 보면서 느끼는 건데, 자부심이 상당하신듯 한데 그게 지나쳐 거만함이 자주 드러나는 것 같습니다. 또 이런 성향이 귀찮은듯 툭툭 내뱉는 말투로도 자주 표현이 되는 것 같고요. 수강자 입장에서 거슬리지만, 그런 성향이 불성실한 강의로 이어지지만 않으면 괜찮습니다.
-
미해결독하게 시작하는 C 프로그래밍
주소 연산자(&) 간접 지정자(*) 반대 개념
안녕하세요.연산자 반대 개념이 헷갈려서 "크롬 AI 모드"랑 얘기해 보니까 아래와 같이 설명합니다.printf("%s\n", &*(szBuffer + 4));코드에서 주소 연산자(&)와 간접 지정자(* )가 서로 반대이기 때문에 "(szBuffer + 4)는 주소" 일 때예를 들어(szBuffer + 4) = "주소" -> "* 연산" -> *(szBuffer + 4) = "값" -> "& 연산" -> &*(szBuffer + 4) = "주소" == (szBuffer + 4);결과적으로(szBuffer + 4) = "주소" <- "& 연산" <- *(szBuffer + 4) = "값" 순서로 돌아왔기 때문에 (szBuffer + 4) == " 주소" 라고 하면 주소 연산자(&)와 간접 지정자(* )가 반대이기 때문에 "(szBuffer + 4)는 주소" 라고 이해하면 될까요?
-
미해결독하게 시작하는 C 프로그래밍
Virtual Memory, Memory, Memory mapping tables
안녕하세요. 강의를 듣다가 궁금증이 생겨 문의합니다. 제가 공부했을경우에는 Memory, Virtual Memory, Memory Mapping Tables가 있어서 CPU가 특정 메모리 영역을 읽고 싶을때 VM과 Mapping Table을 활용해서 Memory에 올라온 값을 읽는 것으로 알고 있는데, 강의에서 설명하실때는 Mapping table에 관한 내용이 없어서요. 제가 공부할 때에는 Linux를 기반으로 공부를 하긴 했습니다만, 윈도우는 Mapping table을 사용하지 않는 걸까요...?
-
해결됨독하게 시작하는 C 프로그래밍
샘플코드 출력 오류 발생 질문드립니다
선생님 안녕하세요초보도 알기쉽게 강의해주셔서 감사합니다. 새프로젝트 파일을 만들어서 예제 코드를 작성해서 컴파일을 진행후 동작을 하면 제 콘솔창에는 이렇게 오류가 나는 상황인데 제가 놓치거나 잘못된 부분이 있는지 질문드립니다.
-
해결됨독하게 시작하는 C 프로그래밍
값의 교환에 사용되는 변수의 위치.
안녕하세요 강사님. 버블정렬을 구현하면서 의문점이 생겨 질문을 남김니다.저는 값의 교환에 사용되는 tmp변수의 선언을 반복문 외부, 즉 반복문보다 먼저 선언을 했고 그 이유는 매번 값을 교환할 때마다 변수를 선언하는것이 비효율적이라고 생각했습니다.질문1. 반복문 내부에서 변수를 매번 선언하는것이 정말 비효율적인가?질문2. tmp변수를 반복문보다 먼저 선언하고 활용하는 것이 정말 효율적인가? 잠재적인 리스크는 없는가?첨부자료로 제 소스코드 캡처본과 강의 타임라인을 남기겠습니다!13:41 ->오류 발견 및 반복문 내부 최종완성
-
해결됨독하게 시작하는 C 프로그래밍
메모리 비교에 관한 질문
20:10 쯤에 메모리 비교같은 경우는 비교연산자로 되지 않기 때문에 반드시 전용함수를 사용해야한다 라고 하셨는데, for루프를 돌면서 비교연산자를 사용해서 비교 가능하지 않나요?? 그리고 memcmp()이 내부적으로 == 를 사용하지않고 두 요소를 빼는 방법을 사용하는 이유가 궁금합니다.
-
해결됨독하게 시작하는 C 프로그래밍
문자열 Null
안녕하세요.만약 우리가 Console 에서 Love 라고 입력하고 엔터를 치면, Read File Buffer 에는 당연히 Null 이 있는게 아니라 L o v e \n 이렇게 5 바이트 가 저장되는건가요? 그렇지만 이게 RAM 으로 넘어가면서 NULL 이 생기는건가요 ? 수업시간에 문자열의 경우, NULL 이 있다고 말씀해주셨는데 잘 이해가 안가서 여쭤봅니다.
-
해결됨독하게 시작하는 C 프로그래밍
C, C++
안녕하세요. 이 강의는 C 와 C++ 둘다 상관없이 들어도 전혀 무방한가요? 아니면 조금이라도 주의해야하거나 사전에 알아두면 좋은게 있을까요 ?
-
해결됨독하게 시작하는 C 프로그래밍
문자열 입출력 코드 에러
gets_s() 에서 오류가 있다고 하는데 원인을 모르겠습니다.
-
해결됨독하게 C를 배운 사람을 위한 선형 자료구조
05_adtFileIO 개정이력에 대한 질문
안녕하세요. LinearDataStructure 프로젝트의 main함수 내용을 보니puts("2024-03-20\t전**님의 제보에 따른 05_adtFileIO 예제 버그 수정(v1.5)");puts("\t\t(사용자가 새로운 항목 추가 시 파일 저장위치 옵셋이 0으로 하드코딩된 오류)");라고 되어있길래 AddNewUser() 함수 정의를 살펴보니 아직 AddNewNode()함수 호출 시 offset이 0으로 하드코딩 되어있더라구요. 혹시 제공된 예제코드에 아직 반영이 되지 않은것일까요? 물론 이벤트루프가 종료되면서 SaveNewDataToFile함수에서 append모드로 파일이 열려서 파일의 맨 끝부터 정상적으로 추가되고, 다음에 다시 실행하면 MYNODE의 offset이 정상적으로 반영은 되더라구요. 그런데 새로 유저를 추가하고, 그 유저를 바로 검색해서 수정한뒤, commit을 한다고 하면, 그때 그 유저의 노드에 담겨져 있는 offset은 0이기 때문에, 가장 앞에 있는 노드의 데이터가 덮어씌워지는 것을 확인했습니다. (예제에서는 'Hoon') 전** 님의 Q&A에 답변하신 것 처럼 전역변수 이용해서 offset을 지정하면 이런 문제가 해결되지 않을까 싶습니다. 항상 좋은 강의 감사합니다. 선생님 강의 들으면서 매번 쾌감이 느껴집니다.
-
해결됨독하게 시작하는 C 프로그래밍
caller 가 메모리 할당 해제를 할 때의 문제점 질문
안녕하세요. 본 강의에서 Callee 가 동적 메모리 주소를 반환하고, Caller 가 나중에 그 동적 메모리를 free 를 통해 해제하는 구조에 문제가 있다고 하셨는데, 어떤 문제가 있는 것인지 구체적으로 잘 감이 잡히지 않습니다.멀티 스레딩과 연관지어 설명해주시면 감사하겠습니다.
-
해결됨독하게 시작하는 C 프로그래밍
단축키 맞는지 여부 문의드립니다.
*4분54초경 ALT+F7을 누르시라고 하셨습니다.-그런데 교수님처럼 실행되지 않았습니다.*그래서 이리저리 찾아보니-Alt+ENTER 를 누르면 나왔습니다. 환경은 저도 비쥬얼스튜디오2022 입니다. 단축키가 어떻게 되는지 혹시나 제가 잘못 아는 건지 싶어 한번더 문의올립니다.지도 부탁드리겠습니다. 감사합니다.
-
해결됨독하게 시작하는 C 프로그래밍
문자열을 사용하는 이중 포인터에 대하여 질문합니다
안녕하세요.char* astrList[3] = { "Hello", "World", "String" }; 이라고 선언했을 때는 각 정적 메모리 영역에 들어가는 문자열 상수의 시작 주소가 배열에 저장된다는 것은 알겠습니다. 그런데, char astrList[] = "Hello"; 라는 식으로 선언했을 때는 해당 문자열 상수가 아니라 그 복사본이 저장된다고 하셨는데, 그 원리가 정확히 무엇인지 궁금합니다.해당 강의에서 등장한, printf("%s\n", astrList[0] + 2); 혹은 printf("%c\n", astrList[0][3]) 등을 실무에서 주로 어떤 식으로 사용하게 되는지 간단하게라도 예시를 들어주시면 감사하겠습니다.
-
해결됨독하게 시작하는 C 프로그래밍
char 포인터 변수의 크기에 대하여 제가 이해한 것이 맞을까요
char 자료형을 가진 데이터는 항상 1byte 씩만을 차지하고, 그것을 가리키는 포인터는 64bit 체계 기준으로 항상 8byte 인 것으로 이해했습니다.그런데 동영상 2:40초부터 "1바이트라는 공간마다 64비트가 붙어 있는 게 아니다" 라고 말씀하셨는데, 위에 제가 이해한 내용이 틀리다는 의미일까요? 감사합니다.
-
해결됨독하게 시작하는 C 프로그래밍
용어 설명 필요
float이 단정도 double이 배정도 인걸 따로 찾아보고 알게되었습니다. 대체적으로 좋은 수업이긴 하나 수강자가 어느 정도 이해하고 있다고 가정하고 수업하는 경우가 종종 있는 것 같습니다. 참고하시면 좋을 것 같습니다.
-
해결됨이해하면 인생이 바뀌는 네트워크 프로그래밍
강의 외 질문
안녕하세요 강사님강의 내용 질문은 아니지만하나 여쭈어보아도 될까요?프로젝트로 혼자 미니 와이어 샤크를 만들고있는대TCP 헤더 파싱에서 막혀서 질문드려요// 리눅스 환경에서 qt를 이용하여 진행중이에 tcp_H* tcp_header = (tcp_H*)((u_char*)ip_header + ip_header->ihl * 4); qs_ret += "Seq="; qs_ret += QString::number(ntohl(tcp_header->seq)); qs_ret += " Ack="; qs_ret += QString::number(ntohl(tcp_header->ack_seq));이런식으로 파싱하는대 실제 와이어 샤크 값이랑 완전히 다르게 나오는대 짚히시는 이유가 있으실까요 ㅠㅠ?AI로는 답이 안나옴니다.. 아래 헤더를 사용하였어#pragma pack(push, 1) typedef struct tcp_H{ uint16_t source; uint16_t dest; uint32_t seq; uint32_t ack_seq; #if __BYTE_ORDER == __LITTLE_ENDIAN uint16_t res1:4, doff:4, fin:1, syn:1, rst:1, psh:1, ack:1, urg:1, ece:1, cwr:1; #else uint16_t doff:4, res1:4, cwr:1, ece:1, urg:1, ack:1, psh:1, rst:1, syn:1, fin:1; #endif uint16_t window; uint16_t check; uint16_t urg_ptr; }tcp_H; #pragma pack(pop)
-
해결됨독하게 시작하는 C 프로그래밍
stdin, stdout
stdin과 stdout이 콘솔 장치 파일을 가리키는 포인터면 Windows에서는 CONIN CONOUT$을 가리키는 건가요?
-
해결됨독하게 C를 배운 사람을 위한 선형 자료구조
마지막 열의 노드를 삭제하였을때 읽기 엑세스 위반 발생 건
안녕하십니까 '더미 헤드를 갖는 리스트로 개선 및 검증' 학습하던 도중에, 마지막 노드인 'jang'을 삭제할 시에 읽기 엑세스 위반 오류가 뜨면서 정상적인 종료가 되지 않았습니다. 디버깅으로 살펴보니 pPrev->pNext도 마지막 노드이다 보니 NULL인 상태에서 pPrev->pNext 도 동일하게 NULL 인상태에서 발생한 문제인듯 합니다. 제생각에는 마지막 노드를 삭제할때는 pPrev->pNext NULL 경우에 대한 IF 절을 넣는게 맞아보이는데 맞는 조치일까요?
-
해결됨독하게 시작하는 C 프로그래밍
필수 실습 (최댓값을 반환하는 함수)
안녕하세요 선생님 코드는 잘 돌아가는데 혹시 부족한 사항이 있는지 궁금하여 글 올려봅니다강의 정말 잘 보고 있습니다 감사합니다
-
해결됨독하게 시작하는 C 프로그래밍
아......ㅠㅠ
필기하는 소리가 왜 이렇게 크게 녹음이 되어 있는건지... 이해가 안가네요. 선생님 목소리 듣는데 너무 방해가 되요 ㅠ 미치겠네요 ㅎㅎ 이미 녹음된거 바꿀수도 없고, 스피커 볼륨을 최소로 해놓고 들어보겠습니다