월 19,800원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결홍정모의 따라하며 배우는 C언어
함수 포인터로 함수 실행 시 메모리가 궁금합니다
함수 포인터로 함수를 실행해도 함수가 stack에 올라가게 되나요? 함수 포인터로 함수의 위치로 간다음 명령문을 차례로 실행시키지만 결국 함수가 실행된다는 건 결국 함수가 stack 메모리에 올라간다는 제 생각이 맞는지 궁금합니다.
- 미해결홍정모의 따라하며 배우는 C언어
4: 27 쯤 !line_flag에 대해
4:27에 !line_flag가 false라고 이야기 하셨는데 애초에 위에 line_flag를 false라고 지정했으면 !line_flag는 true가 되는 것 아닌가요???
- 미해결홍정모의 따라하며 배우는 C언어
비쥬얼 스튜디오 2022
선생님께서 2019버전으로 수업을 진행하시는데 이번에 2022버전이 나왔더라구요 그래서 2022로 다운받아서 쓰고 있는데 조금씩 다른 부분이 느껴져서요,, 다시 2019버전으로 다운받아서 쓰는 것이 나을까요?
- 미해결홍정모의 따라하며 배우는 C언어
while문 사용해서 1번예제 푸는법
While 문을 사용해 풀어 봤습니다. int main() int r, c; r = FIRST_CHAR;c = 0;while (c < NUM_ROWS){while (r <= LAST_CHAR){printf("%c ", r);r++;}r = FIRST_CHAR;c++;printf("/n");}return 0;}r을 아우터 루프에서 FIRST_CHAR로 초기화를 해줘야 이너 루프가 반복되더라구요이 방법말고 r을 보다 깔끔하게? 초기화해서 코드를 줄이거나간편하게 힐 수 있는 방법이 있을까요?
- 미해결홍정모의 따라하며 배우는 C언어
8:39 / 9:25
강의에서 21번째 줄의 코드 printf("%u\n", (unsigned)(& arr2d[1])); 에서 주소라는 의미를 강조하기 위해 &를 붙였다. 사실은 있으나 없으나 똑같다. 라고 이해해도 될까요? 강의에서 33번째 줄에서 (unsigned)* (arr2d + j) 이렇게 되어있는데 (unsigned) (arr2d + j) 과 동일한 값을 출력합니다. *은 역참조 했다. 역참조한 값도 결국 주소이다 라고 이해해도 될까요?
- 미해결홍정모의 따라하며 배우는 C언어
리터럴 상수 질문
리터럴 상수는 원래 메모리에 없는 값이지만, 강의처럼 1004라는 값을 쓰는 순간 1004라는 값이 특정주소에 저장되고, 값과 주소 둘다 변경이 불가능한 상수가 되는 것인가요?
- 미해결홍정모의 따라하며 배우는 C언어
const
const int arr[] = { 1,2,3,4,5 }; 라고 const를 지정했는데 그냥 warning만 뜨고 add_value 함수가 실행이 됩니다. 배열을 add_value 함수에 넣어도 실행이 안되게 하는 방법이 있나요?
- 미해결홍정모의 따라하며 배우는 C언어
14.10강 구조체 compound literal 질문 있습니다
구조체 compound literal이 메모리를 차지하고 있는 l-value라면 그냥 구조체를 선언하고 대입하는 것과 메모리적으로 차이가 없어 보입니다. 그럼에도 불구하고 이 용법을 쓰는 이유는 단지 타이핑을 적게 하기 때문인가요? 그리고 복합 리터럴이 메모리의 어느 공간에 저장이 되나요? stack인가요 아니면 code segment인가요?
- 미해결홍정모의 따라하며 배우는 C언어
포인터 덧셈
강의 4:04초에서 ptr3 = ptr1 + 4; 이 부분에서 배열의 경우 ptr1의 인덱스(0)에 인덱스를 4만큼 더한다고 받아드려도 무방한가요? 또한 강의 4:22에서의 ptr3 - ptr1도 인덱스값 4- 0으로 이해해도 괜찮은지 궁금합니다ㅎㅎ
- 해결됨홍정모의 따라하며 배우는 C언어
signed char의 쓸모
char 형태는 결국 ASCII값을 통해서 처리되는데 1 bit를 sign을 위해 남겨두는게 잘 이해가 안되더라고요error처리를 위한건가 싶지만 구글링 했을때 아직 명확한 답을 찾지 못하여 질문드립니다. - char에서 음수가 필요 없어 보이는데 signed 형태가 있는 이유는 무엇일까요?
- 해결됨홍정모의 따라하며 배우는 C언어
VS Code에서 go to definition하면, VS의 헤더파일 코드가 나타납니다.
강의 3.14 복소수형. 1분 53초부터 시작되는 complex.h파일 definition에 관한 질문입니다. VS Code로 complex.h 파일의 정의 부분으로 이동했는데요. 어찌된 일인지, Visual Studio의 complex.h파일 내용이 보입니다. 분명 여태까지 gcc 컴파일 잘 됐고 강의에서 VS Code 관련 내용 모두 다 잘 따라왔는데요. 이번에 complex 헤더파일 정의로 이동해보니 mingw에서 include되는 헤더파일이 아니었습니다. 이런 경우 어떻게 해야 mingw 내부의 헤더파일을 include할 수 있을까요?
- 미해결홍정모의 따라하며 배우는 C언어
예제 두 번째 문제
struct name_count receive_input(); struct name_count count_characters(struct name_count); 이 둘은 구조체인데 함수처럼 파라미터를 갖고있고 반환값도있는건가요? struct로 선언을 해줬는데 함수처럼 사용될 수 있는건가요?
- 미해결홍정모의 따라하며 배우는 C언어
4.4 strlen 강의 질문드립니다.
#include <stdio.h> #include <string.h> #include <stdlib.h> int main() { char *str5 = (char*)malloc(sizeof(char) * 100); str5[0] = 'H'; str5[1] = 'e'; str5[2] = 'l'; str5[3] = 'l'; str5[4] = 'o'; str5[5] = '\0'; printf("%zu %zu\n", sizeof(str5), strlen(str5)); return 0; } 컴파일 시 강의에는 4,5가 나오는데 저는 8,5가 나옵니다. 어디서 잘못된건지 궁금합니다
- 해결됨홍정모의 따라하며 배우는 C언어
[Visual Studio 2022] 디버깅시, Autos창에서 왜 변수명/값이 Local창과 다르게 보이나요?
디버그 모드, x86으로 디버깅을 하는데 VS2019에서는 안 생기던 현상이 보여 질문드립니다. 문제 상황 : 디버깅할 때, Autos창에서 name, value가 locals창의 그것들과 다르게 보이며, 심지어 변수가 사라지기도 하는 현상 라인 8번까지 실행된 후, Autos창을 보면, 이전까지 있었던 변수 y나 z 둘 중 하나가 사라지고, name과 value도 1이됩니다. 또한, 변수명이 갑자기 x의 값으로 바뀝니다. 예를 들어, x = 5 라고 하면, 이 단계에서 Name 부분에 5로 나옵니다. 그러나 locals 창에서는 위와 같이 문제 없이 나옵니다. 이후 Step Into해서 넘어가면, Autos 창에서 x의 변수명과 값이 z의 value로 대체됩니다. 역시 locals창을 확인해보면, 정상적으로 짚어내고 있습니다. VS 2019로 똑같은 조건에서 디버깅해보면, Autos창에서 문제 없이 잘 짚어냅니다. 어떤 것을 참고하면, 왜 이런 현상이 나타나는지 알 수 있을까요?
- 미해결홍정모의 따라하며 배우는 C언어
int형으로 문자를 받으면 안되나요 ??
%c로 q를 받으면 내부적으로 123이 저장되어 int형 메모리 c에 123이 저장되어 123으로 출력 되는 것이 아닌가요 이부분이 많이 헷갈리네요~~
- 해결됨홍정모의 따라하며 배우는 C언어
3분 48초 부근 질문 있습니다.
16.6에서는 다른 파일에 있는 함수를 실행해서 주소를 비교할 때 함수는 선언할 때 default 값이 extern 이기 때문에 앞에 static이 없는 상태로 main.c에서 my_function.c에 있는 함수 print_address를 사용했는데요 이번 강의에서는 DifferentFile.h에 있는 different_func_in_different_file()를 사용할 때 앞에 static을 붙이시고 그것을 main.c에서 #include DifferentFile.h를 한 다음에 different_func_in_different_file()를 사용하고 있습니다. 이때 #include가 지금까지는 거의 복사, 붙여넣기 수준의 예제로 공부하고 있기 때문에 main.c에서 DifferentFile.h안에 사용된 static으로 정의된 함수를 #include DifferentFile.h로 가져온다면 결국은 main.c에서 static인 different_func_in_different_file()를 사용하는 것인데 어떻게 파일 이름이 다르게 나오는지 잘 이해가 가지 않습니다. static인 함수는 BSS에 저장이 되지만 다른 파일에서 불러올 때 그 파일에서만 visible하기 때문에 같은 이름으로 접근이 가능한 메모리가 BSS 메모리 공간에 하나 더 생기는 것으로 배웠고 16.6에서 주소가 다르게 나오는 것으로 확인할 수 있었는데요. 그렇다면 현재 Different_func_in_different_file()는 static으로 정의가 되어있기 때문에 DifferentFile.h에 있는 Different_func_in_different_file()에 접근하는 것이 아니라 main.c에서 #include에 의해서 복사, 붙여넣기 된 static인 different_func_in_different_file()에 접근을 하는 것이므로 DifferentFile.h 파일의 위치를 문자열로 나타내는 것이 아니라 main.c 파일의 위치를 문자열로 나타내야되는 것이 아닌가요? 제가 이해한 바로는 #include의 특성상 헤더파일의 함수가 static이냐 extern이냐에 따라서 함수의 결과값이 다르게 나올 것으로 예상이 되는데 어떤 이유로 static과 extern의 __FILE__의 값이 같게 나오는지 궁금합니다.
- 해결됨홍정모의 따라하며 배우는 C언어
텍스트 파일 접근에 관한 질문입니다.
안녕하세요. 제가 텍스트 파일에 여러 실험을 해보다 의문점이 생겨 질문 드립니다. 6 Sector 7 4.6 전 해당 내용을 가진 텍스트 파일의 내용을 수정하기 위해서 해당 코드를 작성했습니다. FILE* file = fopen(filename, "r+"); int num; fscanf(file, "%d%*c", &num); printf("%d\n", num); fseek(file, 0, SEEK_CUR); fwrite("JohnWick", 9, 1, file); fclose(file); 기존 내용의 삭제 없이 수정하기 위해 r+ 옵션을 사용하고 한번씩 파일에서 입, 출력을 실행했습니다. 해당 코드는 잘 작동했으나 fseek() 함수를 사용하지 않을시 에러가 발생했습니다. 제가 사용한 fseek(file, 0, SEEK_CUR); 은 file 포인터 위치를 현재 위치에 그대로 두는, 사실상 의미가 없는 과정인데 어째서 이런 결과가 나오는 것인지 알고 싶습니다. 답변 부탁드립니다.
- 미해결홍정모의 따라하며 배우는 C언어
void swap(char** x, char** y) 함수의 내부에서
void swap(char** x, char** y) { char* temp = *x; *x = *y; *y = temp; } 이 함수에서 질문이 있습니다. 문자열 배열을 매개변수로 전달하기 위해서 이중포인터를 썻다는 것은 이해가 됐고, 임시 변수 temp에 문자열을 담아야 하니 char* temp 로 선언해준 것도 이해가 됐는데요, 왜 void swap() 함수 내부에서는, 매개변수로 이중포인터를 받아줬음에도 *x, *y로 사용하나요?(**x,**y가 아니라) 그리고 마지막 *y = temp; 문장도 temp선언을 포인터로 해줬는데 *y = *temp가 아닌 이유를 모르겠어요
- 해결됨홍정모의 따라하며 배우는 C언어
exit()함수
안녕하세요. exit()함수가 <stdlib.h>에 선언되어 있다고 하셨는데 <stdio.h>만 있어도 exit()함수가 작동이 됩니다. 비주얼 스튜디오 2022 Preview 사용 중인데 IDE 버전의 차이 때문인가요?
- 해결됨홍정모의 따라하며 배우는 C언어
16:00 부분 질문있습니다.
제가 기억하기로 static keyword를 하면변수가 BSS에 저장이 된다고 알고 있는데요.12강 강의를 전부 다 복습했는데도 불구하고 다른 파일에서 같은 이름을 가진 변수에 static keyword를 사용했을 때 마치 automatic variable처럼 다른 주소를 갖는 다는 내용의 설명은 찾질 못했습니다.static일 경우는 그 파일 혹은 블록 내에서만 사용되는 지역변수이지만 automatic variable과는 다르게 프로그램의 시작부터 끝까지 남는다고 알고 있습니다.그래서 16:00부터의 강의 내용이 잘 와닿지가 않는데요. 제가 그나마 이해한 부분은 만약 my_functions.h 에서 static이 아닌 extern으로 si를 선언했다면 #include "my_functions.h"를 했을 때 si의 선언이 중복이 돼서 불가능하지만static keyword로 선언을 했다면 해당 파일 내에서만 visible한 지역변수로 취급이 되기 때문에 다른 파일에서 또 선언이 될 시 프로그램 전체로 봤을 때는 BSS에 같은 변수 이름으로 접근이 가능한 메모리 공간이 하나 더 생기지만 각 파일 입장에서는 해당 변수 이름으로 접근을 할 때 컴파일러 입장이나 링커 입장에서 컴파일 오류나 링킹 오류를 발생시키지 않는다고 이해했습니다.제가 생각한 내용이 맞거나 혹은 틀린 부분이나 추가적으로 알아야 하는 내용이 있다면 말씀해주시면 감사합니다.