묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결
c++ 이상하게 저장되는 코드 질문있습니다
void put2byte(void *dest, uint16_t data){ *(uint16_t*)dest = data; } uint32_t num_data = hdr.get_num_data(); void* offset_array = hdr.get_offset_array(); //오프셋 어레이 받아오기 uint16_t now_data_region_off = hdr.get_data_region_off(); void* data_region = 0; uint16_t off = 0; uint16_t remain_data_region_off = now_data_region_off - input_record_size; put2byte((void*)((uint64_t)offset_array + num_data * 2), remain_data_region_off); 이렇게 되어있는데 remain_data_region_off 이 값이 37이하이면 37이하로 저장되는게 아니라 이상하게 저장이 되는데 무슨 문제인지 모르겠습니다 예를 들어 remain_data_region_off = 37 이면 7717이 저장되는데 num_data가 6일때만 발생합니다 0~5까지는 제가 설정한 값대로 저장이되는데 이유를 모르겠습니다
-
해결됨독하게 시작하는 C 프로그래밍
섹션14 최대값 실습문제
안녕하세요 교수님!개린이(개발자어린이) 실무자 입장에서오랜만에 잊고있던 C언어를 써야할 일이 생겨서강의를 신청했는데 너무 재미있고 유익합니다.완전 입문 보다는 더 심도깊고 폭넓게 알려주셔서 너무 좋습니다.저는 아래와 같이 코드를 작성해봤는데한번 봐주시면 감사하겠습니다. 1.int MaxValue(int a, int b, int c) { int max = a; if (max < b) max = b; if (max < c) max = c; return max;}int main(void){ int num1 = 0, num2 = 0, num3 = 0, finalValue = 0; printf("정수를 3개 입력하시오. "); scanf_s("%d%d%d", &num1, &num2, &num3); finalValue = MaxValue(num1, num2, num3); printf("최대값은 %d 입니다\n", finalValue); return 0;}
-
해결됨독하게 되새기는 C 프로그래밍
pszParam 수정이 왜 Hello World print에도 영향을 미치는지 이해가 잘 안됩니다.
섹션1 문자(배)열 상수는 어디에 저장되는가?에서 4분쯤에 나오는char* pszParam = "Hello World\n";printf(pszParam); printf("Hello World\n"); 여기서 pszParam을 디버거 메모리에서 수정시 아래 hello world가 왜 수정되는지 잘 이해가 되지 않습니다. 기본적으로 다른 메모리 공간에 저장 되어야 될꺼라고 생각되는데 컴파일러가 알아서 최적화 했다고 봐도 될까요? printf("Hello World\n"); 여기를 글자 한개만 더 넣어도 pszParam을 수정해도 아래 print 되는 문자열이 같이 수정되지는 않았습니다. 그리고 질문하면서 궁금해진 점이 printf("Hello World\n");이것만 있을 때 이 hello world! 가 쓰여진 주소를 알 수 있는 방법이 있을 까요?
-
미해결홍정모의 따라하며 배우는 C언어
flag
flag의 기능이 잘 이해가 되지 않습니다. 다른 건 다 이해가 되는데 flag가 true이고 false일 때 어떻게 달라지는지, 예를 들어 flag가 처음에 false로 설정이 됐으면 false인 상태가 유지가 되면 어떻고 true로 바뀌면 어떤지가 이해가 잘 안 됩니다.
-
해결됨독하게 C를 배운 사람을 위한 선형 자료구조
RangeSearch002 의 singlelist.c 파일 중 질문 있습니다.
강사님 안녕하십니까. 양질의 수업을 제공해주셔서 잘 듣고 있습니다. 다름아니고 질문이 있어서 여쭙고자 게시글 남깁니다.다름아니고 RangeSearch002 프로젝트 중 singlelist.c 파일의 SearchByAgeRange 함수에서 아래와 같은 코드에서 이해가 되지 않는 점이 있습니다. """void** pNodePtrList = malloc(sizeof(void*) * cnt);""" 본 질문의 목적은 아래와 같습니다.ㅇ malloc을 할 때 왜 따로 타입캐스팅을 하지 않았는가? 검색해서 찾아봤을 때 malloc은 타입캐스팅을 해도 되고 안 해도 되지만 제가 한다면 (void *)malloc 으로 썼을 거 같으며, 디버깅했을 때 결과도 동일한 결과물을 제공하는 것으로 확인했습니다.혹시 잘못된 점이 있으면 따끔한 지적 부탁드리겠습니다. 감사합니다. 좋은하루 되십시오.
-
미해결홍정모의 따라하며 배우는 C언어
포인터 초기화 질문
안녕하세요 질문 사항이 있습니다.포인터 변수를 초기화 할 때, 특정 주소값으로 초기화를 할 수도 있나요? 예시)보통의 경우 int *p = null이라고 한다면, int *p = 0x10000000 처럼 특정 주소로 초기화가 가능한가요? 그래서 printf("%d", &p);로 0x10000000번지의 값을 출력할 수가 있을까요?만약 없다면, 특정 주소에 담긴 값을 읽어오는 방법이 있을까요?
-
해결됨독하게 시작하는 C 프로그래밍
독하게 시작하는 C프로그래밍 교재
강사님 독하게 시작하는 C프로그래밍 교재 이번에 재개정 예정이라고 하셨는데 혹시 언제쯤 나올까요?
-
미해결홍정모의 따라하며 배우는 C언어
디버깅이 강사님 처럼 나오지가 않아요..
디버깅이 강사님처럼 깔끔하게 나오지가 않는데 어떻게 강사님처럼 인터페이스가 나오게 가능한가요? 비쥬얼 스튜디오 색말하는건 아니에요
-
미해결홍정모의 따라하며 배우는 C언어
출력이 이상한데 이유를 모르겠어요
제목 그래도 이유를 모르겠어요
-
미해결홍정모의 따라하며 배우는 C언어
코드
전 이렇게 코딩을 했는데 정상적으로 작동하지 않는데 뭐가 문제인 건가요?그리고 bool 타입을 쓴 이유와 작동원리가 이해가 잘 되지 않습니다.
-
해결됨독하게 시작하는 C 프로그래밍
섹션 13 다차원 배열 연습 문제
안녕하세요 강사님 섹션 13 다차원 배열 연습 문제 관련 질문있습니다해당 문제이고 예전 강사님께서 질문에 답변하셨던 내용을 보니 먼저 2중 for문 구조를 사용하지 말고 단일 for문을 두 번사용해서 각각 행과 열의 합의 게산 후 2중 for문 구조로 바꿔보라고 하셨는데 아래는 제가 2중 for문 구조로 작성한 코드이고 그 아래는 단일 for문을 사용해서 작성했는데 강사님께서 말씀하신 게 이 뜻이 맞을까요? 그리고 제가 생각하기에는 이중 for문이 더 간단한거 같은데 단일 for문을 사용해보라는 건 어떤 이유인지 알 수 있을까요?또한 제가 생각하기에 단일 FOR문을 사용하면 각 FOR문에 대한 합계를 구할때 변수 선언을 너무 많이했는데 혹시 이걸 줄일 수 있는 방법이 있을까요? https://www.inflearn.com/questions/1106529/%EC%84%B9%EC%85%98-13-%EB%8B%A4%EC%B0%A8%EC%9B%90-%EB%B0%B0%EC%97%B4-%ED%95%84%EC%88%98-%EC%8B%A4%EC%8A%B5%EB%AC%B8%EC%A0%9C 이중 FOR문 사용 단일 FOR문 사용
-
해결됨독하게 시작하는 C 프로그래밍
strcat(szPath + 17, sizeof(szPath) -17....)에서
뒤에 17을 빼는 이유가 이해가 안갑니다
-
해결됨독하게 시작하는 C 프로그래밍
디버깅에서 메모리창에서
예를 들어 문자열처리 강의중 예제에서 pszToken을 찾을때, pszToken을 치는경우랑 &pszToken을 치는경우가 다른데 정확히 어떤차이가 있나요? &pszToken는 주소를 찾는거같긴한데 둘의 차이가 헷갈립니다
-
해결됨독하게 시작하는 C 프로그래밍
배열 필수 실습문제
안녕하세요 강사님 다름이 아니라 필수 실습 문제를 풀다가 궁금한 점이 있어 질문드립니다. 다음 문제에서 저는 아래와 같이 코드를 작성했고 제 코드가 맞다고 생각했는데 #include <stdio.h>int main(void){ int nMin = 0; int aList[5] = {30, 40, 10, 50, 20}; for (int i = 0; i < 5; ++i) printf("%d ", aList[i]); putchar('\n'); for (int i = 0; i < 5; ++i) { if (aList[i] < aList[i + 1]) nMin = aList[i]; else nMin = aList[i + 1]; aList[i + 1] = aList[i]; aList[i] = nMin; } for (int i = 0; i <5; ++i) printf("%d\t", aList[i]); putchar('\n'); return 0;aList라는 변수가 Corrupted되었다는 메세지가 뜨는데 이게 무슨 말인지 알 수 있을까요? 감사합니다
-
해결됨홍정모의 따라하며 배우는 C언어
코드 작동이 잘 안되요
코드를 똑 같이 쓴거 같은데 출력이 제대로 안되요. 인터넷에 물어보니까 sizeof를 써야하던데 왜 써야 하는지 저는 왜 안되는지 잘 모르겠어요
-
해결됨Windows 시스템 프로그래밍 - 기본
강사님 파일입출력(Callback함수)와 관련하여 질문 드립니다.
강의 내용중 비동기 입출력 CALLBACK 함수 사용 부분에서 OVERLAPPED 구조체와 BUFFER 를 동적할당 해야 한다고 하셨는데.하지만 비동기 I/O를 하고 있는 스레드가 마지막 부분에서 SleepEx(1, TRUE) 로 대기하고 있습니다. 즉 스레드는 해당 CALL 함수 종료 후에도 계속 존재하기 때문에 스래드의 로컬변수로 선언해서 전달해도 CALLBACK 함수에서 사용하는데는 문제가 없는거 아닌지요? (이벤트로 처리하는 부분은 스레드 변수로 처리)왜 동적변수로 할당해야 하는지 이해가 되지 않아서요?실제로 제가 스레드내의 로컬 변수로 선언하고 동작 시켜도 정상적으로 동작을 해서요.
-
해결됨독하게 시작하는 C 프로그래밍
break와 중첩 Loop 예제
안녕하세요 강사님 break와 중첩 Loop 예제 문제 관련해서 질문이 있습니다아래 코드에서 a를 입력하면 i:0, a이 출력되고 i=1이 그 밑에 다시 한번 출력되는데 이것은 키보드로 a를 입력하고 enter 키를 입력할때 enter키도 입력으로 받아들여서 카운트가 하나 올라가서 그런 것 인가요?강의 시간때 말씀하신 개행문자 때문이라는게 이 뜻일까요?
-
해결됨Windows 시스템 프로그래밍 - 기본
dll 명시적 링크 오류 (원인 및 해결 방법이 필요 합니다)
DLL 명시적 링크에서 파일 오류가 생기는데 해결이 안됩니다.구글 검색이랑 여기저기 다 해봤는데 나오는 게 없어서 질문 합니다.일단 코드 입니다. 질문 내용은 코드 밑에 다가 적어 두겠습니다.DLL 파일 이름 = Dll1.dllmain 파일 이름 = dlltest.cpp경로는 강의와 동일 합니다. main() 파일#include <iostream>#include <Windows.h>#include <tchar.h>using namespace std;//void WINAPI DllTestFunction(int pParam);int main(){ HINSTANCE Hin = ::LoadLibraryA("..\\x64\\Debug\\Dll1.dll"); DWORD Error1 = ::GetLastError(); if (Hin == NULL) { printf("falied LOADLIBARARY"); } DWORD(WINAPI * dllfun)(void) = NULL; dllfun = (DWORD (WINAPI*)(void)) ::GetProcAddress(Hin, "DllFunction"); Error1 = ::GetLastError(); std::cout << Error1 << std::endl; dllfun(); if (dllfun == NULL) { std::cout<<"failed dllfun()"<<std::endl; wprintf(_T("falied dllfun()")); return 0; } std::cout << "ddd" << std::endl; FreeLibrary(Hin); return 0;} DLL 파일 #include "pch.h"#include<stdio.h>#include<Windows.h>#include<iostream>#include<tchar.h>#pragma onceextern "C" __declspec(dllexport) DWORD WINAPI DllFunction(void);DWORD WINAPI DllFunction(void);BOOL APIENTRY DllMain( HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ){ switch (ul_reason_for_call) { case DLL_PROCESS_ATTACH: case DLL_THREAD_ATTACH: case DLL_THREAD_DETACH: case DLL_PROCESS_DETACH: break; } return TRUE;}DWORD WINAPI DllFunction(void){ wprintf(_T("DLL TEST: DllTestFunction(param:)")); std::cout << "failed DLLfun dllfun()" << std::endl; return 0;} 현재 증상dllfun(GetProcAddress로 얻은 함수 주소)가 자꾸 NULL로 나와서 실행이 안됩니다. 현재까지 확인된 내용 Hin(LoadLibraryA) 모듈 핸들을 얻었는 데 NULL은 안 뜨나 디버깅을 했더니 This Program cannot be run in Dos mode 라고 나옵니다.dllfun(GetProcAddress로 얻은 함수 주소)은 NULL이 확실합니다. 밑에 코드 몇번 변경하면서 확인 됬습니다.GetLastError()을 dllfun()에 127(지정된 프로시저를 찾을 수 없습니다."라는 오류가 생성됩니다.)이 나옵니다 현재까지 시도경로 조정 절대경로, 상대 경로 다해봤습니다.함수 이름 변경extern "C" ~ 이것도 파일 양쪽에 다 넣어보고 한쪽에도 넣어보고 했습니다.구글 검색해도 원하는 내용이 안나옵니다.Hin의 자료 형을 HMODULE, HINSTANCE 다해봤습니다.환경변수 조정v3에 걸려서 꺼보고 실행exe 파일위치를 기준으로 경로 조정빌드도 해봤는데 안됩니다.대략 이 정도 입니다.원인이랑 해결방법이 궁금 합니다.
-
해결됨독하게 시작하는 C 프로그래밍
섹션 12[필수 실습 문제] '*' 출력 놀이 응용
안녕하세요 강사님 섹션 12 [필수 실습 문제] '*' 출력 놀이 응용 관련해서 질문이 있습니다 강사님께서는 if 문을 사용하셔서 문제를 해결하셨는데저는 for문만 사용했습니다수업시간에 강사님께서 말씀하신 puts("*")만 사용해서 연속으로 별을 찍는 것이 아니고 저만의 논리가 있으면 프로그래밍에서 방법은 상관없는 건가요? 특정한 정답이 있는건지 궁금합니다.
-
해결됨Windows 시스템 프로그래밍 - 기본
static 영역의 rw 가능한 곳은 어떤 데이터가 담기는지 궁금합니다.
안녕하세요! 프로세스 파트 마지막 강의를 듣다가 궁금한 점이 있어 질문 남겨봅니다!static 파트는 r 와 rw가 가능한 곳으로 나뉜다고 말씀해주셨고 보통 r만 가능한 영역은 문자열이 담기게 된다고 이해했습니다. rw 가 가능한 영역은 어떤 데이터기 담기는 지 알 수 있을끼요??