묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨(2026) 일주일만에 합격하는 정보처리기사 실기
비교연산자와 반복문+조건문 문제 풀이 강의 질문이요.
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이렇게 순서대로 이해하면 되나요? 이게 맞는건가요? 비전공자라 이해가 잘 안되서 여쭙니다. 감사합니다.
-
해결됨(2026) 일주일만에 합격하는 정보처리기사 실기
포인터 강의와 더불어서 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()에서 자꾸만 문제가 발생합니다...
-
해결됨(2026) 일주일만에 합격하는 정보처리기사 실기
배열길이 부분에 질문있어요
8:29초 부분입니다. b=a[:3] 이면 배열주소 0123을 출력하는게 아니라 3까지(012) 라고 봐야하는건가요?c=a[4:6]도 마찬가지로 45까지만 출력하는건가요?
-
미해결홍정모의 따라하며 배우는 C언어
커리큘럼 관련 질문
안녀하세요 맨 마지막 따라하며 배우는 프로그래밍에서 C -> 코딩수학 C+ ->>> 딥러닝 순으로 나열 해 주셨는데 이 순서가 최적의 커리큘럼으로 정해진 순서로 이해하면될까요??
-
해결됨독하게 시작하는 C 프로그래밍
24년 8월 기준 비주얼 스튜디오 2019 버전 다운로드 방법
C#,C++ 관련 코드를 공부하기 위해서 비주얼 스튜디오 2019 버전을 다운로드 하려고 하는데다운르도 홈페이지 들어가니깐 community 버전 다운로드 버튼이 활성화가 되어있지 않던데혹시 다른 방법 아시는 분들 있는지 싶어서 글 작성해 봅니다 !!! 부탁드리겠습니다 ㅠㅠ
-
해결됨(2026) 일주일만에 합격하는 정보처리기사 실기
업캐스팅 강의 마지막 예제 관련 질문입니다.
내가 나를 낳은 형태에서 예제와 같이 special draw를 호출하면 오류가 나지 않을까요??
-
해결됨(2026) 일주일만에 합격하는 정보처리기사 실기
강의문의드려요
질문은 동영상 강의에 들어가서 오른쪽에 커뮤니티 버튼을 통해 해주세요. 그래야어떤 강좌에서 질문하셨는지 알 수 있습니다.영상에서 몇 분 몇 초 대를 알려주셔야 제가 한 번에 질문 내용 확인이 가능합니다.이미 다른 누군가가 질문을 한 이력이 있을 수 있습니다. 질문 게시판을 한 번 확인 부탁드립니다.학교의 과제나 타 강사의 코드 등 외부 수업 자료에 대해서는 답변하지 않습니다.제가 다루는 커리큘럼 외의 이론이나, 너무 디테일한 컴퓨터 이론에 대해서는 답변 드리지 않습니다.시험에 안 나오는 경우가 많고, 나와 봤자 1문제 나오는데 외워야 할 부분이 많은 것 등 (예시: 서브넷 마스크 계산)질문을 올릴 때 이 글은 모두 지우고 내용을 입력해주세요. 정처기 비전공자인데요 섹션1 설명듣고 섹션2듣는데 계속 문제만 풀던데요 아무 개념이없이 복합문제 푸는 느낌이 들어서요섹션3에 있는 c언어, 자바, 파이썬 강의듣고 섹션2를 들어야 하는거죠?
-
해결됨(2026) 일주일만에 합격하는 정보처리기사 실기
C언어에서의 정적 변수 vs JAVA에서의 정적 변수
질문 그대로입니다. 약간 쓰이는 개념 자체가 다른거 같아서 질문드립니다.
-
해결됨(2026) 일주일만에 합격하는 정보처리기사 실기
조건문 부분 강의에서 낚시라고 한 부분이 궁금해요
자세한 설명이 궁금합니다.a = 10, b=5, c=8if(a!=b!=c)에서 a!=b를 먼저 계산한 값이 false(0)그럼 후에 비교하는값이 0 != 8이 되는건가요?
-
해결됨홍정모의 따라하며 배우는 C언어
Break point hit문제
Break point를 사용할때 솔루션에서 처음 만든 프로젝트에서는 문제없는데 두번째 세번째 프로젝트는 break point hit이 되지 않고 전체가 전부다 디버깅이 됩니다. 어떻게 해결을 해야할까요?
-
해결됨독하게 시작하는 C 프로그래밍
동적 할당 메모리 질문
안녕하세요! 현재 강사님의 동적 할당 메모리 강의에서 아래 예제 소스코드를 파헤쳐보고 있는데요! #include <stdio.h> #include <stdlib.h> int main(void) { int* pList = NULL; pList = (int*)malloc(sizeof(int) * 3); pList[0] = 10; pList[1] = 20; pList[2] = 30; for (int i = 0; i < 3; ++i) { printf("%d\n", pList[i]); } free(pList); return 0; }그런데 디버그 모드로 실행하면서 메모리 뷰를 보고 있는데, 잘 이해가 되지 않는 지점이 있어 질문드립니다.(제가 개인적으로 MacOS를 사용해서 CLion 이라는 IDE를 쓰긴하는데, 강의 속 visual studio 처럼 메모리 뷰를 보는 기능은 동일하게 제공해주어서 제가 사용하는 IDE 첨부사진인 점 양해 부탁드리겠습니다 (__) ) 우선 break point를 아래처럼 라인 바이 라인으로 설정한 후 하나씩 실행해보고 있는데요. 한 step 씩 사진을 첨부하면서 설명을 하겠습니다.1.정수 포인터 변수인 pList 에 주소 연산자(&)을 써서 "정수 포인터 변수의 메모리 주소"를 확인 => 64비트 운영체제 컴퓨터에서 포인터 변수는 8바이트(64비트) 크기를 차지하기에 이것은 이해가 됩니다2.정수 포인터 변수인 pList를 메모리 윈도우에서 확인=> 이 부분이 명확히 잘 이해가 가지 않습니다. 일단 pList를 메모리 윈도우에 입력했을 때 pList가 '정수' 타입으로 선언했기 때문에 사진 속 초록색 영역이 4바이트(32비트) 크기인 것은 알겠는데, 초록색 영역에 들어있는 "ff c3 00 d1" 은 의미가 무엇인가요..? 사실 근본적으로 pList가 정수 포인터 변수인 것은 알겠는데, 메모리 윈도우에 pList 를 입력했을 때랑 &pList 입력했을 때의 차이가 명확하게 무엇인지 스스로에게 설명을 못하겠습니다..3.다음 break point로 한 step 실행한 뒤, pList에 주소 연산자(&)를 써서 메모리 윈도우를 확인=> 소스코드에서 pList에 NULL을 할당했기 때문에 아래 사진 속 메모리 윈도우에서 빨간색으로 변한 영역이 0으로 변한 것은 이해가 갑니다.4. 3번 단계에서 메모리 윈도우에서 pList를 입력한 후 확인=> 이 부분도 잘 모르겠습니다. pList를 메모리 윈도우에 입력하니까 failed to read memory 메세지가 뜨면서 메모리를 읽지 못한다는 문제가 발생했는데, 왜 읽지 못하는 것인지.. 이해가 가질 않습니다.5. 다음 break point로 한 step 실행한 뒤 pList를 메모리 윈도우에 입력한 후 확인=> 소스코드에서 malloc() 함수가 정의되어 있는 라인이 실행된 후에야 4번에서 발생한 문제가 사라지더라구요. 4번에서 발생한 문제의 원인을 모르니 5번에서 왜 문제가 해결되었는지도 연쇄적으로 잘 이해가 가지 않네요..혹시 위 5개 단계에서 제가 질문한 부분에 대해 답변 가능하신지 여쭙습니다. 동일한 visual studio 환경이 아니라 죄송합니다 ㅠ 천천히 답변주세요! 기다리겠습니다 🙂
-
해결됨홍정모의 따라하며 배우는 C언어
내부적으로는 포인터 방식으로 전부 작동이 된다?
안녕하세요 비전공자 첫 언어로 선생님의 C강의를 듣고있는 초보자 입니다.첫 프로그래밍 수업이라 챕터 0 CPU작동방식을 설명을 해주셨어도 이게 뭐가 뭔지 모르니까 아 그런느낌 정도만 알고 있었고 각 강의마다 개념 이해하느라 급급해서 가장 기본적인 프로그램 자체의 구동방식을 생각 안하고 있었는데이번 강의를 통해 프로그램 자체의 작동방식과 더불어 포인터는 주소를 저장하는 소소한 문법 중 하나일 뿐이다 라고만 이해하고 있었습니다.근데 이 강의를 보고 이해한 점은 포인터는 사실 프로그램을 실행하는 그 자체인가? 라고 생각하게 되었습니다.그래서 궁금한 점은챕터 0 CPU작동 방식에서 먼저 CPU에서 주소를 호출하여 그 값을 가져온다는 개념과변수도 결국 메모리 어떠 한 주소의 명칭으로 대신 사용한다는 개념과이 강의에서 알게 된 함수 이름 자체가 포인터라는 사실 또 함수를 호출한다는 것은 함수의 포인터 주소로 가서 순차적 명령실행 방식이라는 설명을 통해 이해한 것 은결국 프로그램 자체는 실행이 되었을 때 내부적으로 전부 포인터로 작동이 된다는 것 이라고 깨달았는데 이해한바가 맞을까요?
-
미해결홍정모의 따라하며 배우는 C언어
오류
똑같이 작성했는데 PunctCount가 작동하지 않고 계속 0으로만 뜹니다.그리고 저 파란 부분이 잘 이해가 안 가는데 왜 저렇게 코딩이 된 건지 자세히 알려주시면 감사하겠습니다.
-
미해결홍정모의 따라하며 배우는 C언어
질문
분명 똑같이 쳤는데 계속 오버플로우가 납니다. 왜 그러는지 모르겠습니다.그리고 swap 함수에서 이중 포인터를 썼으니까 앞에 *를 더 찍어줘야 하는 것이라고 생각을 했는데 이게 왜 아닌지도 궁금합니다.
-
해결됨독하게 시작하는 C 프로그래밍
함수 이름의 메모리 주소
안녕하세요~ 강의 열심히 따라가다가 그동안 배워온 것들 복습을 진행중입니다. 그러다가 함수 관련해서 질문이 있는데요! 강의 속에서 함수를 정의하면 해당 함수의 이름에는 배열처럼 메모리 주소가 할당된다고 하셨는데요! 좀 더 자세히 살펴볼려고 디버그 모드로 정의된 함수 이름에 어떤 메모리 주소가 들어가 있는지 살펴보고 있었습니다. Q1. 그런데 특이하게 디버그 모드를 최초로 실행할 때부터 함수 이름에 메모리 주소가 일종의 쓰레기값..(사진 속에서는 16진수로 ff 값이 적혀있네요)으로 정의되어 있고 이후 코드 실행 step 을 계속 실행시켜도 별다른 값으로 업데이트가 되지 않더라구요. 그렇다는 것은 런타임에 들어가기 전부터 빌드 타임에 함수 이름에는 메모리 주소가 최초로 1번만 할당되고 런타임 때는 할당되지 않는 것으로 이해하면 될까요?(마치 size of 연산자처럼 컴파일 연산자 처럼요..비교가 좀 다를 수 있긴 합니다만..) Q2. 함수의 메모리 주소도 포인터를 이용해서 막 여기 저기 활용하는 사례도 많나요??(마치 문자열이나 다른 배열을 포인터로 활용하는 것처럼..) Q3. 그리고 어쨌건 최초로 변수를 선언하고 정의할 때 메모리가 할당되는 시점은 무조건 빌드 타임에 할당되는 것이죠? 그러면 런타임에 메모리가 할당되는 시점도 있나요..? 자꾸 헷갈리네요! 혹시 질문이 이해가 안가신다면 답글 달아주세요! 감사합니다 :)
-
해결됨CUDA 프로그래밍 (3) - C/C++/GPU 병렬 컴퓨팅 - 메모리 구조
[Matrix Addition Problem] 1D를 사용하지 않는 이유가 뭔가요?
강의에서 10,000 x 10,000 행렬의 덧셈을 해결하고자 했고, 이를 2D thread block(32 x 32)으로 풀어내셨습니다. 1D thread block을 사용하지 않는 것에 대한 의문이 들었습니다. [질문]1D thread block은 실무에서 잘 쓰이지 않나요? 의문을 가진 이유는 다음과 같습니다. 우선 2D로 설계할 경우, thread block의 dimension을 어떻게 설정하는지에 따라 낭비되는 thread가 달라집니다.[1 x 1,024] : GridDim(10,000 x 10 x 1), 2,400,000개 낭비[2 x 512] : GridDim(5,000 x 20 x 1), 2,400,000개 낭비[4 x 256] : GridDim(2,500 x 40 x 1), 2,400,000개 낭비[8 x 128] : GridDim(1,250 x 79 x 1), 1,120,000개 낭비[16 x 64] : GridDim(625 x 157 x 1), 480,000개 낭비[32 x 32] : GridDim(313 x 313 x 1), 320,256개 낭비 Thread 낭비가 가장 적은 block dimension은 강의에서 소개해주신 [32 x 32] 입니다. 저는 여기서 1D로 설계했을 때, 낭비되는 therad의 개수가 궁금해졌습니다.[1,024] : GridDim(97,657 x 1 x 1), 768개 낭비 1D로 thread block을 설계했을때, therad 낭비는 768개로 2D로 설계하는 경우와 비교했을때 적지않은 차이라고 생각합니다. 물론 실제로 측정해본 결과(RTX 3090) 약 40 usec 차이로 1D thread block인 경우가 더 빠르긴 했지만 생각보다 큰 차이는 아니었습니다.양질의 강의를 제공해주셔서 감사합니다!!
-
해결됨독하게 시작하는 C 프로그래밍
쉬프트연산에서 궁금한점이 있습니다.
곱셈, 나눗셈 할 때 CPU가 비트를 왼쪽, 오른쪽으로 쉬프트연산을 하는건 이해가 됩니다.그런데 유효 비트자리수를 넘어가면 절삭이 되잖아요.절삭이 되면 사실상 데이터를 잃어버리게 되는것인데절삭이 될지 안될지 어떻게 미리 알고 곱셈, 나눗셈을 연산하나요?
-
해결됨독하게 시작하는 C 프로그래밍
unsigned short가 64KB 라는게 이해가 안됩니다.
"정수형" 강의의 5:45 쯤에 나오는 내용입니다.unsigned short는 표현범위가 0~65535인데용량으로 환산하면 64KB 라고 말씀하신 내용이이해가 안됩니다.65535는 (2의 16승 - 1) 이라서 16비트 용량인것 같은데 64KB용량이라고 하시니 헷갈립니다.만약 65535를 단순히 K단위로 환산하면 65K가 나오는데 이를 또 65K가 아닌 64KB라고 하시니... 제가 어느부분을 놓치고 잇는 건가요?