묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결홍정모의 따라하며 배우는 C언어
포인터에 [ ]을 붙이는건 새로운 문법인가요??
ptr[k]부분이 이해가 가질 않아서요...다른 분들이 올린 질문도 봤는데 2차원 배열도 결국엔 1차원으로 정렬된 메모리라는건 어느정도 이해가 된 것 같은데...포인터 옆에 [ ]를 붙이는 것이 간접 참조 연산자랑 같은 기능을 하는건지 궁금합니다..
-
해결됨독하게 시작하는 C 프로그래밍
quick sort 부분 구현했습니다.
pivot이 되는 5보다 큰 값은 오른쪽의 작은 값과 교환하면서 마지막에는 pivot의 위치도 바꾸어 주었습니다. 이후 코드를 작성한다면 pivot의 값을 다시 0과 high+1로 또 for문을 작성해야 하는데 코드가 무자비하게 길어집니다. 솔직하게 for문 안에서 모든걸 끝내기에는 제가 너무 부족한거같습니다. 이후 배우는 함수에 피벗이나 리스크 길이 등 매개변수로 받아서 리스트 길이가 0이나 1이 될때까지 반복하고 값을 교환해주는 것도 함수로 만들어서 처리하면 좋을 것 같습니다. 코드가 복잡해질수록 너무 어렵네요. 이정도 구현한것으로 만족하겠습니다
-
해결됨독하게 시작하는 C 프로그래밍
선택정렬 if 교환
소스코드 18라인에 if로 j가 변환할떄만 바꿔주신다고 했는데 변환하지 않아도 자기자신끼리 교환하는 거니까 결과값이 달라지진 않잖아요. 근데도 조건문을 사용하는게 더 좋은 코드인건가요?
-
해결됨독하게 시작하는 C 프로그래밍
질문
수업듣다가 말씀하신 부분중에 궁금한부분이 있어서요.혹시 스태틱바인딩, 다이나믹 바인딩 관해서 더 알아보고 싶은데, 설명을 어디강의에서 들을 수 있나요 ~~~?????
-
해결됨홍정모의 따라하며 배우는 C언어
tool() 함수 위치에 따른 에러
안녕하세요,main.c 와 second.c 에서 각각 하기와 같이 적어봤습니다.프로그램을 실행시키면, 하기와 같은 에러가 뜨는데요, undefined warning이 뜨는 이유는 main()함수에서 fun_second()를 실행시, fun_second()로 가서 tool()함수를 실행하려 했으나 전방선언이 되어있는것도 아니고 함수 선언부+몸체가 fun_second() 보다 앞쪽에 정의되있지 않기때문에 tool()함수를 발견할 수 없어 undfined에러가 뜬 것으로 이해했습니다.그런데 redefinition 에러가 뜬건 이해가 잘 되지 않습니다.tool()함수는 fun_second()아래 한번만 정의했는데 어째서 중복 정의라는 에러가 뜬걸까요??수박님 제가 질문한 글에 달아주신 답변 말고도, 다른 질문글에 달아주신 답변들이 독학하는데 정말 큰 도움이 됩니다. 항상 감사합니다.
-
해결됨홍정모의 따라하며 배우는 C언어
int* 만큼 이동한다는 말의 뜻이 궁금합니다.
안녕하세요, 이전 질문글의 답변에서 궁금한 점이 있어 질문드립니다. 링크는 https://www.inflearn.com/course/lecture?courseSlug=following-c&unitId=28273&tab=community&category=questionDetail&q=1142021 이고, 스샷으로 가져왔습니다. 밑줄 친 부분이 이해가 잘 가지 않는데요,arr 배열의 원소타입이 int 이므로 , arr + 1 은 arr[1]을 가리키는 포인터의 위치로 이동한다는 건 잘 알겠습니다. arr, 즉, arr[0]의 주소가 만약 100이면 104 로 이동하겠죠. int 크기가 4바이트니까요.그렇다면, parr + 1도 int* 크기만큼 이동해야 할 것 같은데요, int* 는 주소값을 저장하는 타입이므로 주소값의 크기인 4바이트(혹은 운영체제에 따라 8바이트) 만큼 이동해야 할 것같은데, 하기 첨부한 그림을 보면 parr[0] 시작 주소 부터 parr[1] 시작 주소까지 12바이트를 이동합니다. 직관적으로는 그럴것 같은데 헷갈려서 질문드립니다. 감사합니다.
-
해결됨독하게 시작하는 C 프로그래밍
메모리의 주소가 다르게 출력됩니다.
디버깅 모드로 추적하면서 따라가던 중 콘솔에 출력되는 pszdata의 주소가 &pszdata로 추적하였을 때 나오는 메모리 주소와 다른 값이 출력됩니다 szbuffer는 같은 값이 나왔습니다 .. 왜 그런걸까요 ..??
-
해결됨홍정모의 따라하며 배우는 C언어
* (asterisk) 가 초기화문에서 사용될때, 할당문에서 사용될때 차이.
안녕하세요,초기화문에서 *가 사용될땐 주소가 저장되고,일반 명령문에서 변수앞에 *를 붙이면 앞의 경우와 다르게 redirection 연산자로서 사용되는데 그냥 암기해야 되나요? 간단한 예를 들면, int *a = 0x0077*a = 123;위 두 문장의 의미는 각각 int 포인터 변수 a 를 선언하며 0x0077 이라는 주소값을 a 에 저장. a가 가리키는 주소(0x0077)에 접근하여 123을 저장. 감사합니다.
-
미해결C언어 슈팅게임 따라만들기
mac OS 에서 프로젝트 진행 시 라이브러리 없음
맥 혹은 리눅스에서 프로젝트를 진행하려고하는데 <conio.h><Window.h>등 윈도우에서만 가능한 라이브러리들을 어떻게 하면 좋을까요?다른 방식으로 구현할 수 있는 방법이 있을까요?
-
해결됨Go Hard to C (feat. Algorithm)
stdio.h 파일을 찾을수 없다고 나오네요.
화면과 같이 진행중인 학습자입니다.cmd 에서 stdio.h 파일을 찾을수 없다고 나오는데, 혹시 추가 설치해야 하는 것이 있나요?
-
해결됨홍정모의 따라하며 배우는 C언어
함수 선언부와 정의부가 다른 파일에 있어도 빌드가 되는 원리.
안녕하세요,강의에서main.c 파일 안에 #include "my_print_fucntions.h"를 통해 my_print_functions.h를 main파일에 인클루드해주면, 함수의 선언부만 main.c에 복붙이 됩니다. 선언부는 main.c안에 놓이는거겠죠.그런데 이 때, #include "my_print_fucntions.c" , 함수의 바디가 정의되어있는 my_print_fucntions.c 파일을 main.c 안에서 인클루드해주지 않아도 되는 이유는, 링커가 알아서 함수를 찾아 연결해주기 때문이고, 그렇게 되는 이유는 헤더파일의 함수 선언부에서 extern 키워드가 생략되어있어서 그렇다고 봐도 될까요?( (extern) void print_hello(); 이렇게요.) 감사합니다.
-
해결됨CUDA 프로그래밍 (2) - C/C++/GPU 병렬 컴퓨팅 - 벡터 vector 더하기
매크로 함수를 쓴 이유
안녕하세요!좋은 강의 잘 듣고 있습니다.common.cpp 코드 중에서 ELAPSED_TIME_BEGIN(N)과 ELAPSED_TIME_BEGIN(N)을 매크로 함수로 정의한 이유가 무었인지요?CUDA_CHECK_ERROR() 함수는 __FILE__과 __LINE__ 때문에 매크로 함수로 정의하신 걸로 이해합니다만, 시간 측정 함수들을 매크로함수로 정의하신 이유는 잘 이해되지 않습니다.답변 부탁드립니다.감사합니다.
-
미해결HAL, CubeMX, TrueSTUDIO를 이용한 STM32F4 무료 강좌
SDIO구현
SD카드 인터페이스와 FATFS 오픈소스를 이용해 출력하는 강의대로 GPIO 핀맵 설정하고 코드를 따라 작성했는데 SD카드에 저장된 데이터가 Character LCD로 출력되지 않습니다. 의심되는 문제는 두 가지입니다. Cube MX 때와 다르게 파일의 구성이 더 세분화 되어있습니다.강의 때 작성한 소스코드에서는 Src 폴더안에 bsp_driver_sd.c 파일과 sd_diskio.c 파일이 같이 들어있는데 현재 업그레이드 된 STM Cube IDE에서는 해당 소스코드가 다른 폴더의 경로로 세분화 되어있습니다. 이것 때문에 인클루드 참조가 어려워져서 참조가 안되는 일부 함수로 인해 SDIO 통신이 안되는 것은 아닌지요??헤더파일의 참조 또한 다릅니다.stm32f4xx_hal_conf.h 파일은 Inc 폴더안에 있는데, 이것을 인클루드 하는 파일은 Drivers ->STM32F4xx_HAL_Driver->Inc->Legacy 경로에 stm32f4xx_hal.h 이 헤더파일이 stm32f4xx_hal_conf.h 파일을 인클루드 하고 있늗네 폴더 경로가 다르면 인클루드시 경로까지 고려하여 다시 작성해야 되는걸로 알고 있습니다. 저렇게 작성하면 참조가 되지 않아 동작이 중단되는 것으로 생각하는데 어떤점이 잘못된 것인지요?? MX_NVIC_Init(); 함수의 내부 코드--> 3번의 경우 UART 통신 / 이전의 외부인터럽트 구현을 위한 것의 초기화로 알고 있는데 SDIO를 위한 NVIC 인터럽트 설정도 있는지요?? 코드를 열어보면 해당내용은 없는데, SDIO구현을 위한 global interrupt는 GPIO 핀맵에서 체크해두면 다른 소스코드에 작성되는 건가요? SDIO구현을 위한 함수를 일일이 다 들여봐야 할 것 같은데 시간상 효율이 떨어지는 길로 보여 질문드립니다. 추가로 해당링크에 제가 작성한 소스코드 파일을 첨부드립니다. https://cafe.naver.com/mhiveacademy/1351
-
해결됨홍정모의 따라하며 배우는 C언어
7분 28초경 질문
저번에 아무 생각 없이 지나쳤던 부분을복습을 하면서 다시 보니 뭔가 이상해서 질문을 드립니다.교수님이 arr2d를 인디렉션을 하면 arr2d[0]이 나온다고 하셨는데저 생각으로는 &arr2d[0][[0]이 나오거든요아마 제가 틀린걸거라고 생각은 하는데 교수님 말씀이 잘 이해가 안되네요arr2d는 &arr2d[0]이고(arr2d[0]을 가리키고)arr2d[0]은 &arr2d[0][0]이니(arr2d[0][0]을 가리키니)arr2d를 인디렉션하면 &arr2d[0][0]이 나오는 게 제 생각에서는 맞는건데...제가 지금까지 공부하면서 만든 복습노트를 봐도 제 생각에서는 &arr2d[0][0]이 맞는데역시 제가 틀린거겠죠?아니면 교수님 설명을 제가 다른 뜻으로 이해를 한 것 인가요?
-
미해결홍정모의 따라하며 배우는 C언어
저번에 VS code 실행이 안된다고 글 남긴 수강생입니다......
교수님께서 말씀하신 깃허브 내용대로 c/c++ runner도 깔고 json 코드도 일부 수정했는데 여전히 실행이 안됩니다 뭐가 문제일까요.....아래에 launch.json 코드도 남기겠습니다. 그리고 말씀하신 xcode가 xcode-select 말씀하시는 거면 깔려있습니다. 제발 뭐가 문제인지 알고 싶네요 ㅜㅜ 초보라서 아직 개발 환경 설정 이런 데는 정말 다루기가 어렵습니다..... <launch.json> "version": "0.2.0", "configurations": [ { "type": "lldb", "request": "launch", "name": "Debug", "program": "${workspaceFolder}/<executable file>", "args": ["-std=c++17"], "cwd": "${workspaceFolder}" }, { "name": "C/C++ Runner: Debug Session", "type": "lldb", "request": "launch", "args": ["-std=c++17"], "cwd": "/Users/brian/Downloads/Visual Studio Code 2.app/Contents/Practice", "program": "/Users/brian/Downloads/Visual Studio Code 2.app/Contents/Practice/build/Debug/outDebug" <c_cpp_properties>"configurations": [ { "name": "macos-clang-x64", "includePath": [ "${workspaceFolder}/**" ], "compilerPath": "/usr/bin/clang", "cStandard": "c17", "cppStandard": "c++17", "intelliSenseMode": "macos-clang-x64", "compilerArgs": [ "" ] } ], "version": 4}
-
해결됨홍정모의 따라하며 배우는 C언어
printf(".20f",d) 출력 범위 질문
이렇게 커맨드를 쳤는데,이렇게 나왔습니다.그런데 제 출력값과 달리, 교수님은 3.141592....600 으로 끝이 반올림이 되었고, 그 이유로 double로 표현할 수 있는 자릿수의 한계때문에 그렇다고 말씀주셨습니다.근데 저는 왜 반올림이 안되고 끝까지 나온걸까요?release, x86 에서 실행했습니다!
-
미해결HAL, CubeMX, TrueSTUDIO를 이용한 STM32F4 무료 강좌
CANable 구매 후 STM32F407V_EduBoard_Ver1.22와 연결 뒤 통신이 안됩니다.
CANable을 구매하고 cangaroo.exe 실행해보면 CANable을 인식하지 못합니다. CANable의 MCU는 STM32F072C8T6으로 확인되었고, CANable의 SWDIO, SWCLK 핀도 확인하여 펌웨어를 집어넣어보려고 하는데 ST LINK V2 펌웨어 디버거가 인식하지 못합니다. 까페 강의글에 댓글로 문의드렸습니다.https://cafe.naver.com/mhiveacademy?iframe_url_utf8=%2FArticleRead.nhn%253Fclubid%3D29220373%2526articleid%3D864%2526commentFocus%3Dtrue 답변부탁드립니다. 감사합니다 현정호 드림
-
미해결홍정모의 따라하며 배우는 C언어
vscode 실행이 안됩니다......정말 힘드네요
실행하려고 했더니 위와 같은 오류가 발생했습니다..... 제 나름대로 구글링도 해보고 깔려있는 json 파일에 들어가서 컴파일 경로도 수정해보고 configuration도 바꿨는데도 계속 오류가 나더군요....정말 너무 안 돼서 답답합니다 혹시 이 문제 어떻게 해결해야 할지 여쭤봐도 될까요? 도움 주신다면 정말 감사하겠습니다
-
미해결홍정모의 따라하며 배우는 C언어
1차 배열과 2차 배열에서 *ptr의 차이
1차 배열에서 *ptr은 해당 첫번째 메모리의 값이엿는데2차 배열에서 *ptr은 메모리값이 아니라 첫번째 메모리의 주손가요??
-
해결됨독하게 시작하는 C 프로그래밍
디버그 모드 실행
안녕하세요코드에 오류가 있을 시 디버그모드로 실행해서 분석을 하시는데 잘못된 코드에서 디버그모드를 실행시키면 마지막으로 성공한 빌드를 실행하시겠습니까? 라는 문구만 뜨고 디버그모드는 실행이 되지 않습니다.강의 속 처럼 디버그모드에서 오류를 창르여면 어떻게 해야하나요?