묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨독하게 되새기는 C 프로그래밍
자료 구조 공부 후에
독하게 되 세기는 C를 들어야 하나요? 아니면 자료구조 공부 전에 독하게 되 세기는 c를 들어야 하나요? 어떤 걸 먼저 들어야 더 깊이 있게 이해가 되나요? 아니면 상관 없나요?
-
해결됨독하게 C를 배운 사람을 위한 선형 자료구조
CLI UI적용 강의에서 질문드립니다.
강의 자료로는 잘 실행되는데 똑같이 복사 붙여넣기로 다른 솔루션에서 실행하려면 이렇게 오류가 뜹니다. 이유를 잘 모르겠어 질문드립니다..
-
미해결홍정모의 따라하며 배우는 C언어
3.1-6분
표에 나오는 십진수 정밀도란 무엇을 뜻하나요?
-
미해결홍정모의 따라하며 배우는 C언어
제가 이해한 것이 맞는지 긴가민가해요
int arr[2][3] = { {1,2,3},{4,5,6} };에서결과적으로 주소값은 모두 같겠지만 배열명 arr이 가르키는 것은 이차원 배열의 첫번째 행이고, arr[0]이 가르키는 것은 배열의 첫번째 행의 첫번째 원소가 맞나요?
-
해결됨홍정모의 따라하며 배우는 C언어
5분 41초경 7분 45초경 질문
여기서객체가 생기는 위치가 딱 고정되어 있냐 아니냐 그 기준으로 보시면 됩니다.이 부분이 잘 이해가 안되는데객체가 생기는 메모리의 위치가 객체가 고정되는 특징(데이터 또는 BSS segment의 특징?)을 가지고 있냐 아니냐이렇게 교수님 말씀을 이해해도 괜찮을까요? 그리고7분 45초 에서 교수님이 하시는 말씀의 순서가 좀 복잡해서 이해가 잘 안됬는데사실은 프로그래머들이 편리하도록 자동적으로 영역과 지속 기간을 관리해주는 성질을 가질 수 있게스택이란 공간을 만들고 거기에 저장을 하는 것이다.라고 제가 정리를 좀 해봤어요 이 정리가 맞는 표현인가요? 항상 좋은 답변 정말 감사합니다.
-
미해결홍정모의 따라하며 배우는 C언어
12분 경 질문
여기서 i=3이라고 했을 때 printf에서 왜 2로 출력되는지 궁금합니다. 감소 연산자 시그널이 없어서 3으로 나와야 하는 것이 아닌 건가요?
-
미해결홍정모의 따라하며 배우는 C언어
10분 58초 경 질문
전위 연산자가 붙어있는 j에서 일단 증가를 시키고 대입한다고 하셨는데 그게 무슨 뜻인지 이해가 되지 않습니다.
-
해결됨Windows 시스템 프로그래밍 - 기본
이예제 파일 어디 있나요
파일을 못 찾겠어요
-
미해결홍정모의 따라하며 배우는 C언어
4분 33초 경에 질문이 있습니다.
&arr[0][0]은 그냥 주소값이지 포인터가 아니지 않나요? 너무 헷갈립니다..ㅠ주소값에다 정수를 더해서 너무 혼란스럽습니다... 이게 포인터면 +1을 하면 int 크기만큼 건너뛴다는건 알겠는데 저건 주소값인데 +1을 할 수 있는건가요?
-
미해결홍정모의 따라하며 배우는 C언어
scanf()가 잘못된 입력을 읽을 때 행동
안녕하세요,이 코드에서 'a 2 3 '을 입력 후 'b 4 5'를 입력하면, 두번째 while문이 돌아갈때 입력버퍼에 남아있는 ' \nb 4 5' 중 ' '는 c로 들어가고, 다음 %d를 읽으려 할때 '\n' 와 %d가 매칭되지 않아 scanf가 종료되고, rows와 cols는 기존 2 와 3이 유지되어 하기와 같이 결과가 나오는 것을 이해를 했습니다.핵심은 버퍼에 남아있는 ' \nb 4 5' 중 '\n'은 scanf가 읽다가 포기하고 버려졌다 라는 건데요,(이게 스트림이 옮겨졌다고 표현하는게 맞나요?) 이를 테스트하기 위해 하기와 같이 코드를 짜봤는데, 또 아닌 것 같아서요..만약 제가 깨달은게 사실이라면,제가 예상한 결과 ->이 코드를 실행시키고 입력창에 'hello'를 입력하고 엔터를 치는 순간 입력 버퍼에 'hello\n' 이 들어가게되고,첫번째 while문의 scanf() 가 실행될때 %d와 hello가 매칭되지 않으므로 scanf를 종료. scanf가 비정상적으로 종료되었으므로, 입력버퍼에 있는 'hello\n'에서 hello는 버려지고, \n으로 스트림이 옮겨짐. 두번째 while문 조건에서 c에는 \n이 저장되고, 조건문이 거짓이므로 바로 break;가 실행되어 종료됨.실제 결과 ->두번째 while문의 putchar까지 실행됨. 왜 차이가 발생한건지 궁금합니다.
-
해결됨홍정모의 따라하며 배우는 C언어
5분 35초경 질문
헤더파일 안에서 static으로 변수를 선언해줘도 되는 이유는C파일에서 그 헤더파일을 불러왔을 때그 C파일의 파일 스코프에서 static으로 변수를 선언 해주는 것과 같아서인가요?얘를 들어 #pragma oncestatic const double PI = 3.141592;static const double gravity = 9.8;이런 내용의 PIgravity.h라는 이름의 헤더 파일이 있고 main.c 파일에서#include "PIgravity.h"이렇게 해주면main.c 파일의 파일 스코프에static const double PI = 3.141592;static const double gravity = 9.8;이렇게 선언된 것과 비슷한 거라서 가능한건가요?
-
해결됨Windows 시스템 프로그래밍 - 기본
응용편에서는 어떤 내용이 들어가나요?
강의 완강했습니다. 응용편에서는 어떤 내용이 들어가는지 알 수 있을까요?
-
해결됨홍정모의 따라하며 배우는 C언어
realloc() 함수 질문이 있습니다.
int* ptr = NULL;ptr = (int*)calloc(n, sizeof(int)); // contiguous allocation if (!ptr) exit(1); for (int i = 0; i < n; ++i) printf("%d ", ptr[i]);printf("\n"); for (int i = 0; i < n; ++i) ptr[i] = i + 1; n = 20; int* ptr2 = NULL;ptr2 = (int*)realloc(ptr, n * sizeof(int)); realloc() 함수에서 메모리를 새로 할당 해줄 수 없을 경우 NULL 값을 반환해준다고 했는데그 때 원래 있던 ptr은 어떻게 되는 건가요? 그대로 남아있는 건가요 아니면 free를 한 상태가 되는 것 인가요?realloc() 함수는 원래 있던 포인터에 대한 할당 받은 메모리 공간은 free를 한 상태로 바꿔준다고 했는데이렇게 NULL 값을 반환해 줄 때도 원래 있던 메모리 공간을 free한 상태로 바꿔주는 건지 궁금해서요 항상 좋은 답변 감사합니다.
-
해결됨독하게 시작하는 C 프로그래밍
달팽이 숙제 이렇게 풀면 의도와 다를까요?
안녕하세요 강의 재밌게 잘 보고있는 1인입니다~숙제 설명듣기전에 풀어봐야겠다고 해서 3시간 걸려 풀었습니다. 설명듣고나니 방법이 좀 다른거같은데, 의도에 좀 벗어난 것일까요? 또한 포문마다 조건이 달라 이해하기 더 어려운 코드가 된건 아닌지에 대해서도 널널한개발자님의 의견이 궁금합니다.
-
해결됨독하게 C를 배운 사람을 위한 선형 자료구조
SearchToRemove와 RemoveNode가 분리되어야 할 필요가 있을까요?
RemoveNode를 직접 먼저 구현한 후 강의를 듣게 되었는데요,저는 RemoveNode 안에 Search하는 코드를 통합해서 짰는데 SearchToRemove가 RemoveNode를 실행시키기 위해서만 필요하다면 굳이 분리를 해야 할까 하는 의문이 들었습니다.하나의 함수는 하나의 동작만 실행해야 해서 분리가 된 것일까요? 아니면 SearchToRemove가 나중에도 사용이 될 가능성이 있어서 분리된 것일까요?제가 작성한 코드를 첨부합니다. void RemoveNode(const char* pszName) { USERDATA* pTmp = g_pHeadNode; USERDATA* previousNode = NULL; bool isFound = false; // 노드 찾기 while (pTmp != NULL) { if (strcmp(pTmp->name, pszName) == 0) { isFound = true; break; } previousNode = pTmp; pTmp = pTmp->pNext; } // 노드 찾기 실패 if (isFound == false) { printf("\"%s\" : Not Found, remove failed.\n", pszName); return; } // 헤드인 경우 if (g_pHeadNode == pTmp) { g_pHeadNode = pTmp->pNext; free(pTmp); printf("\"%s\" : Found, remove successed.\n", pszName); return; } // 헤드가 아닌경우 previousNode->pNext = pTmp->pNext; free(pTmp); printf("\"%s\" : Found, remove successed\n", pszName); }
-
해결됨독하게 시작하는 C 프로그래밍
(섹션13- 교차와 달팽이숙제) 교차 예시 관련해 오설명있는 거 같습니다.
C공부 시작하고 강의 정말 재밌게 듣고 있는 수강자입니다~영상 9분 34초입니다.교차 예상 결과값 아래이지만1 2 3 4 510 9 8 7 6 ....강의에선 아래와 같이 값이 나왔습니다.1 4 3 2 510 7 8 9 6 ... flag를 이중 반복문 안쪽에 기입해서 생긴 오류였던거 같습니다.다른 분들 헷갈리지 않으시길 바라며 남겨봅니다.오류가 맞나요? 아니면 제 오해인지요?확인해주시면 정말 감사하겠습니다~
-
미해결홍정모의 따라하며 배우는 C언어
_getche() 엔터키 입력시 커서가 맨 앞으로 돌아가는 이유
안녕하세요,abc 입력하면이렇게 a에서 깜박깜박 다음 신호 입력을 대기하는 상태가 되는데요, 그 이유를 추측해봤습니다.1, _getche 는 엔터키를 만나면 '\r' 을 반환. getchar()는 '\n' 을 반환.2, '\r' 는 carriage return, 캐리지 리턴이라고 해서 커서를 현재 줄의 맨 앞으로 이동시킴. '\n' 은 new lien, 이 문자는 커서를 다음 줄로 이동시킴.3, 따라서 abc를 입력하고 엔터키를 누르는 순간 putchar('\n')가 아닌 putchar('\r') 가 실행되어 커서가 맨 앞으로 이동.4, 종료조건인 ch != '\r' 에 해당되지도 않으므로 (ch는 '\t') while문이 종료되지 않고 다음 입력을 기다림. 맞나요?? 디버거 찍어보니까 ch가 '\r' 이더라구요 '\n'일줄 알았는데 -_-;; 시간 날린거같아서 짜증납니다ㅠ
-
해결됨독하게 C를 배운 사람을 위한 선형 자료구조
05_adtFileIO 프로젝트 문의
안녕하세요. 선생님! 소스 보다가 하나 발견한 부분 공유드립니다.프로젝트이름: 05_adtFileIO소스파일: singleList.c함수명: SearchListByName Q. 해당 함수는 Key값으로 조회하여 데이터를 로드하는 함수입니다.현재는 파일에서 매번 로드하도록 되어있는데캐싱된 데이터(pDataCache)가 있다면, 파일에서 읽어올 필요가 없을것 같아 문의드립니다.추가로 테스트 해보니Search(Kim) > Edit 0 > 수정완료 > Commit X > Search(Kim) 를 하면Edit에서 수정했던 데이터가 없어지는 현상이 있습니다.이미지의 흰 네모안의 로직(주석포함)은 추가해본 부분 입니다.
-
해결됨홍정모의 따라하며 배우는 C언어
defining declaration이 뭔지 이해가 안됩니다.
전 강의에서도 교수님이 직접적으로 설명을 해주진 않으신 것 같은데그래서 그런지 이게 정확히 뭔지 감이 안 잡히네요. 좀 알려주세요! 항상 좋은 답변 감사합니다.
-
해결됨독하게 시작하는 C 프로그래밍
[섹션10 연산자] 필수 실습 문제 합격, 불합격 판단하기
안녕하세요 강사님[섹션10 연산자] 필수 실습 문제 합격, 불합격 판단하기 문제 질문드립니다. 강사님께서는 printf 함수안에 조건(3항)연산자를 넣으셨는데요저는 nSelect이라는 문자열을 선언해서 nSelect에 합격, 불합격이라는 문자열을 저장해서 printf로 출력하는 방식으로 문제를 풀어봤습니다 nSelect이라는 변수에 문자열의 공간!?을 10byte로 선언하고 0으로 초기화 한뒤에 실행을 했더니 실행은 잘 되는데 nSelect이라는 변수에 빨간색 밑줄과 오류 코드가 L-value로 뜨더라구요 왼쪽 피연산자를 변수인 nSelect으로 선언했는데 오류코드가 왜 뜨는건지 모르겠고 오류코드가 뜨는 왜 점수를 80으로 입력하면 '합격', 70으로 입력하면 '불합격'이라고 실행이 잘되는데 왜 그런지 이유가 궁금합니다. 문제가 없는건가요? 일부러 오류를 내보려고 nSelect이라는 변수에 문자열의 공간!?을 1byte로 선언하고 0으로 초기화 한뒤에 실행을 했더니 일단 실행은 잘됩니다. "합격"이라는 글자는 한글이므로 한글자 당 2byte 총 4byte의 크기이고 "불합격"이라는 글자는 3*2 = 6byte라서 nSelect라고 선언한 문자열 변수에 공간에 없어서 실행조차 되지 않아야하는데 실행이 됩니다. 왜 실행이 되는 것일까요? 물론 하단 오류 목록에 '배열의 크기가 0보다 커야합니다.' '상수크기의 0 배열을 할당할 수 없습니다'라는 설명이 있긴하지만 실행은 되어서 의문입니다. 또한 8번째 코드의 L-vaule 오류는 여전히 나옵니다.nSelect 문자열의 크기 선언을 1byte로 하면 역시 실행은 잘되는데 여전히 L-value 오류 항목이 뜹니다 선언한 배열의 크기가 1byte인데 그보다 크기가 큰 "합격", "불합격"이 문자열에 대입되고 실행이 됩니다. 이유가 궁금합니다