묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨독하게 시작하는 C 프로그래밍
for문 문제 하나로 5시간 썼습니다
공백 * 출력 놀이 응용인데요오늘 오전10시반부터 지금 오후 4시30분인데 밥먹는 시간 빼고 최소 5시간 이상 썼는데도 답이 안나오네요. 그냥 답을 보고 외우는게 좋을까요? 성격상 수학문제 풀때도 답지 절대 안보고 끝까지 싸매는 스타일인데 너무 비효율적일까요..
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
15:50초 length 코드 처리순서 질문
15:50초에 3가지 예시의 모든 출력값이hello, world! 라고 하셨는데요마지막 예시인 length 처리순서가 잘 이해가 안갑니다1)문자열 길이 계산에서 0부터 시작되고 13까지 가는건가요?(공백, 콤마, 느낌표까지 포함)2) 다음 줄에 증감++ 되어 13까지 가고 탈출되어 for문으로가는건가요?3) for 문 내 length 변수는 int에서 선언된 값이 들어가는지요?
-
해결됨독하게 시작하는 C 프로그래밍
클래스 뷰 설정하는 법
초입부에서 클래스 뷰를 이용하여서 실행 설정해서 보라고 하셨는데 제가 직접 프로젝트 추가하면서 확인하고 싶어서 새파일을 추가하는데 클래스 뷰에는 선생님처럼 나오지 않아서 매번이렇게 빌드 제외하고 컴파일실행하고 있습니다. 어떻게 클래스 뷰를 이용하여 간편하게 빌드할 수 있는지 알려주세요.
-
미해결홍정모의 따라하며 배우는 C언어
10.9 강의에서 9분경 casting
워닝을 막기 위해 데이터타입을 임의로 바꿔주고 있는데double형 변수의 주소값을 저장하기 위해선 포인터도 똑같이 double형으로 선언해줘야한다고 배웠습니다.강의에서처럼 임의로 int형 포인터로 바꾸면 원래 double형의 주소값을 저장하고 있던 포인터 변수에는 아무런 변화가 없나요? 제가 맞게 이해하고 있는 것인지 모르겠습니다만,예를 들어 그냥 일반적인 변수 casting을 할 때,실수 float형을 int형으로 형 변환을 한다면 int형은 float형에 담겨있던 데이터를 모두 나타내지 못 하기 때문에 소수점 뒤에 있는 숫자들이 잘리면서 데이터에 변화(?)가 생기지 않습니까? 포인터 변수에서는 이와 같은 문제가 생기지 않는 것인지 궁금합니다.
-
해결됨독하게 시작하는 C 프로그래밍
강의를 듣는데 하나도 못 하겠어요..
이 강의 수강 전에 유튜브에서 C언어 코딩에 대해서만 배웠습니다.이론위주로 하다가 실습예제 하려니까 하나도 작성을 못 하겠어요..처음에 Hello World 출력하다가 갑자기 값 초기화 설정해서 scanf 작성하면서 여러 변수 작성하고 알수없는 미로에 빠진 것 같네요C언어 포기하는게 맞을까요
-
해결됨홍정모의 따라하며 배우는 C언어
values[ ]와 * values 관련 질문드립니다.
안녕하세요. 강의를 들으며 필기를 하던 중 확신이 가지 않는 부분이 있어 질문드립니다.아래에 작성한 코드에서 동적 메모리 할당을 통해 FAM과 구조체를 어떻게 연결하여 활용할 수 있는지 대한 과정을 주석으로 정리했습니다. 이 과정이 정확한지 확인 부탁드리며, 또한 FAM을 구조체의 마지막 멤버로 선언해야 하는 이유가 해당 과정으로 인한 규칙인지 궁금합니다.또 필기 중 제가 이해한 부분에 틀린 내용이 있다면 피드백 주시면 감사하겠습니다. [ 필기 내용 ]values[ ]는 메모리 차지 x , * values는 포인터 변수 자체가 메모리 차지 values[ ]는 구조체와 같은 메모리 블록에 존재, * values는 구조체와 독립된 메모리 블록에 위치struct flex* pf = (struct flex*)malloc(sizeof(struct flex) + n * sizeof(double)); // 동적 할당으로 sizeof(struct flex) + n * sizeof(double) 크기의 메모리 할당 // 이 메모리를 struct flex* 타입으로 캐스팅 (해당 메모리의 주소를 struct flex*로 사용할 것을 지정) // 다른 멤버의 크기 (구조체의 고정 멤버) sizeof(struct flex) 계산 후, 남은 공간을 배열이 차지 다른 구조체 포인터 변수에 값 대입 시 values[ ]의 메모리(값)는 복사 x, * values는 원본과 같은 메모리 참조
-
해결됨한국에서 제일 쉬운 리눅스 커널 강의
current 매크로를 이용할때 sp_el0 를 활용하는 이유
안녕하세요. 좋은강의 감사합니다.설명해주신대로 코드를 보면 sp_el0 를 이용해서 current 주소를 얻어온다는것을 이해할 수 있었습니다. 그런데 문득 sp_el1 도 있을텐데 왜 sp_el0 를 활용한건지 궁금합니다. sp_el0 는 user process 들이 활용하는 sp 이고 sp_el1 은 kernel process 들이 활용하는 sp 로 알고 있는데 요,그런용도가 아니라 그냥 sp_el0 를 모든 process 의 task_struct 의 시작주소를 저장하는 용도로 활용하는걸까요? <arch/arm64/include/asm/current.h>15 static __always_inline struct task_struct *get_current(void) 16 { 17 unsigned long sp_el0; 18 19 asm ("mrs %0, sp_el0" : "=r" (sp_el0)); 20 21 return (struct task_struct *)sp_el0; 22 } <arch/arm64/kernel/entry.S>829 SYM_FUNC_START(cpu_switch_to) 830 mov x10, #THREAD_CPU_CONTEXT 831 add x8, x0, x10 832 mov x9, sp 833 stp x19, x20, [x8], #16 // store callee-saved registers 834 stp x21, x22, [x8], #16 835 stp x23, x24, [x8], #16 836 stp x25, x26, [x8], #16 837 stp x27, x28, [x8], #16 838 stp x29, x9, [x8], #16 839 str lr, [x8] 840 add x8, x1, x10 841 ldp x19, x20, [x8], #16 // restore callee-saved registers 842 ldp x21, x22, [x8], #16 843 ldp x23, x24, [x8], #16 844 ldp x25, x26, [x8], #16 845 ldp x27, x28, [x8], #16 846 ldp x29, x9, [x8], #16 847 ldr lr, [x8] 848 mov sp, x9 849 msr sp_el0, x1 850 ptrauth_keys_install_kernel x1, x8, x9, x10 851 scs_save x0 852 scs_load_current 853 ret 854 SYM_FUNC_END(cpu_switch_to) 855 NOKPROBE(cpu_switch_to)
-
해결됨한국에서 제일 쉬운 리눅스 커널 강의
context switching 을 할때 수행되는 asm 코드 관련 문의 드립니다.
안녕하세요. 강의 잘 보고 있습니다.어리석은 질문일수도 있습니다만 문득 든 생각이라 여쭤봅니다. X0 ~ X18 은 저장 및 복원 하지 않고,X19~X29, SP, LR 만 복원하는 이유가 있을까요? 829 SYM_FUNC_START(cpu_switch_to) 830 mov x10, #THREAD_CPU_CONTEXT 831 add x8, x0, x10 832 mov x9, sp 833 stp x19, x20, [x8], #16 // store callee-saved registers 834 stp x21, x22, [x8], #16 835 stp x23, x24, [x8], #16 836 stp x25, x26, [x8], #16 837 stp x27, x28, [x8], #16 838 stp x29, x9, [x8], #16 839 str lr, [x8] 840 add x8, x1, x10 841 ldp x19, x20, [x8], #16 // restore callee-saved registers 842 ldp x21, x22, [x8], #16 843 ldp x23, x24, [x8], #16 844 ldp x25, x26, [x8], #16 845 ldp x27, x28, [x8], #16 846 ldp x29, x9, [x8], #16 847 ldr lr, [x8] 848 mov sp, x9 849 msr sp_el0, x1 850 ptrauth_keys_install_kernel x1, x8, x9, x10 851 scs_save x0 852 scs_load_current 853 ret 854 SYM_FUNC_END(cpu_switch_to) 855 NOKPROBE(cpu_switch_to)
-
해결됨독하게 시작하는 C 프로그래밍
강사님이 설명해주신 버블정렬에 대해 질문이 있습니다.
안녕하세요, 정렬법에 관해서 정리하던 중 버블정렬과 선택정렬이 헷갈려서 질문드리고자합니다. 버블정렬 실습문제(nullnull_C / 13_bubbleSort)에서 소스코드를 for (i = 0; i < 4; ++i){ for (j = i; j < 5; ++j) { if (aList[i] > aList[j]) { nTmp = aList[i]; aList[i] = aList[j]; aList[j] = nTmp; } }}로 작성해주셨는데, 자료 조사 중 버블정렬은 aList[i]와 aList[j]를 비교하는게 아닌, aList[j]와 aList[j+1]를 비교하는 정렬방법으로 나와있길래 문의드립니다.https://velog.io/@tmdwns1521/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%EB%B2%84%EB%B8%94%EC%A0%95%EB%A0%ACbubble-sort-%EB%9E%80https://gmlwjd9405.github.io/2018/05/06/algorithm-bubble-sort.htmlhttps://gmlwjd9405.github.io/2018/05/06/algorithm-bubble-sort.htmlhttps://www.programiz.com/dsa/bubble-sort
-
미해결홍정모의 따라하며 배우는 C언어
FLT_MAX로 초기화를 하는 이유
강의 1:00에서 float max = -FLT_MAX;float min = FLT_MAX;로 초기화하셨는데, 왜 max는 최솟값으로, min은 최댓값으로 초기화하신거며 일반적으로 초기화할 때처럼 0.0f로 안한 이유가 있을까요?
-
미해결홍정모의 따라하며 배우는 C언어
10.4 포인터와 배열 13:05 *ptr++
for문에서 *ptr++을 하게 되면 역참조를 먼저해서*ptr 실행 후 ptr++로 진행하는 방식이라고 했는데, 실행되는 형태로 보면 *ptr을 먼저 실행한다면 (*ptr)++의 방식이 되면서 처음의 값이 100부터 109까지 나와야 하는 것 아닌가요?
-
해결됨독하게 시작하는 C 프로그래밍
64비트 int형 크기
안녕하세요.매번 좋은 강의 감사드립니다.int형 자료형의 경우 32비트에서 4바이트, 64비트에서는 8바이트로 알고 있는데강사님 영상에서 실습 진행시 int nData = 10; 의 코드를 디버깅하게 되면 메모리에 0a 00 00 00 으로 총 4바이트 공간을 할당하는 같은데, x64으로 설정하셨음에도 4바이트 처럼 보이는 이유가 있을까요?13:31초 부근
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
코드질문드려요
(기출) 2023년 1회 코드해석문제 5분40초 printf("%s\n",p); 에서 p는 *이 안붙어있으니 주솟값이 나와야하지 않나요??
-
해결됨독하게 시작하는 C 프로그래밍
goto문에서 라벨과 관련해서 질문이 있습니다.
안녕하세요, C 기초를 수강하고 있는 학생입니다.다름이 아니라, 강사님께서 작성하신 goto문의 예제 중 하나인 bool과 관련해서 질문이 있는데요,라벨은 중괄호로 묶이지 않는이상 라벨 직후의 구문만 포함한다고 나괄호로 묶이지 않는이상 라벨 직후의 구문만 포함한다는 정보를 찾았는데, 강의에서 작성하신 코드에서는 CLEAN_UP에 대한 구문이 중괄호로 묶여있지 않아서 질문드립니다.int main(void){ bool isA = false; bool isB = false; int nInput; scanf_s("%d", &nInput); if (nInput > 0) isA = true; else goto CLEAN_UP; scanf_s("%d", &nInput); if (nInput > 0) isB = true; else goto CLEAN_UP; CLEAN_UP: if (isA) isA = false; if (isB) isB = false; return 0;}
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
이 문제 풀이 좀 보고싶은데 어디서 봐야할까요?
(기출)2022년 3회 코드해석 문제 25초 C언어 문제 해설 보고싶은데 어디서 볼 수 있을까요?
-
해결됨독하게 C를 배운 사람을 위한 선형 자료구조
04_MultiIndex 예제에서 질문이 있습니다
안녕하세요 강사님!SearchByIndexAgeRange 함수 안에 있는 코드를 다음과 같이 바꿔서 사용해도 될 것 같아서 변경해보았습니다. void** SearchByIndexAgeRange(int min, int max, unsigned int* pCount) { // unsigned int cntTotal = 0; // USERDATA** aList = (USERDATA**)MakeIndexAge(&cntTotal); unsigned int cntTotal = GetListCount(); USERDATA** aList = g_idxListAge; // 중략... }혹시 이 방식 대신 MakeIndexAge를 사용하신 이유가 있으실까요?
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
C언어로 입력받고 출력하기 문제 - 1 개행 문자 관련 질문
04 : 08안녕하세요. C언어로 입력받고 출력하기 문제 - 1 에서 교재의 문제 하단 답에왜 printf("두 숫자를 입력하세요: ") 이후의 출력이두 숫자를 입력하세요: 5 10 5 + 10 = 15 (이하 생략)로 출력되는지 궁금합니다. printf("두 숫자를 입력하세요: ") 의 경우 개행 문자가 없기 때문에두 숫자를 입력하세요: 5 105 + 10 = 15이런식으로 붙어서 출력되어야 하는게 아닌가요? 기초적인 질문입니다만, 답변 부탁드립니다. 감사합니다.
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
length 질문
14:32 초 부근에 length 를 함수부분에서 널값이 있다검색한다음에 호출하는것으로 이해했습니다. 궁금한점은....Hello, world!에서 ","다음이 공란(널값)인데 수행이 멈추고6이 출력되야 하지 않나 헷갈려서 문의드립니다. 정답은 13 공란이 포함되어 있던데 헷갈리네요^^;
-
해결됨독하게 시작하는 C 프로그래밍
memcpy 내부 구현은 어떻게 아신건가요?
선생님 안녕하세요!자바에서 native 메서드 보다가 선생님 C 강좌까지 와버렸습니다. 메모리 복사 관련한 함수 중 memmove의 내부 동작 원리를 찾다가 강의에서 memcpy를 설명하시는걸 보았습니다. 이때 memcpy 내부 구현이 반복문으로 되어있다고 설명하셨는데 이런 내부 구현은 어떻게 아신건가요?혹시 memmove도 반복문으로 구현이 되어있을까요?
-
해결됨독하게 시작하는 C 프로그래밍
[필수연습문제] 합격, 불합격 여부 판단하기 질문있습니다.
정답에서 3항 연산결과를 바로 printf 로 뽑아내는것을 보여주셨는데, 그렇다면 연산결과("합격,불합격" 문자열)은 어디에 저장되어서 출력하는건가요?? 제 생각에는 버퍼나 특정저장공간을 만들어 넣은다음에 뽑을것 같은대.. 디버그 모드에서도 보이지가 않아서 궁금합니다