월 19,800원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 해결됨홍정모의 따라하며 배우는 C언어
비주얼 스튜디오 2022를 사용중인데
13분 44초경에 new filter라는 항목이 있는데저는 그게 없고 new folder만 있어요그리고스샷 처럼 소스 파일 폴더도 헤더 파일 폴더도 없어여2022 버전이라서 그런건가여 아니면 제가 멀 잘못 한건가여?좋은 답변 항상 감사드립니당.
- 미해결홍정모의 따라하며 배우는 C언어
printf("%s, %p, %c\n","We,"are,*"excellent programmers");
여기 부분에서 %p가 어떻게 작동하는지 정확히 이해가 안되네요..!
- 해결됨홍정모의 따라하며 배우는 C언어
5분 20초경 질문
영상에서 5분 20초경에 int는 4바이트인데 여기에 쌓인 것은 보니까 차이가 4가 나는 게 아니고 더 큰 숫자만큼 차이가 나고있죠라고 말씀을 하시는데쌓였다는 것이 n의 주소번호가 쌓인 거라고 말씀하시는 게 맞죠? 근데 이걸 왜 쌓였다고 표현하는지 이해가 안됩니다.스택을 쌓을 때 변수가 사용할 메모리가 쌓이게 된다고 했던 거 같은데 메모리가 아닌 메모리의 주소를 쌓인다고 표현하는 게 이해가 안됩니다.그리고 int는 4바이트인데 여기에 쌓인 것은 보니까 차이가 4가 나는 게 아니고 라고 말씀을 하시는데 int가 4바이트인 것과 주소번호의 숫자가 차이가 4가 날거라고 예상하는 것이 무슨 연관이 있는 건지 이해가 안됩니다.연관이 있으니 연관이 있는 것처럼 말씀을 하시는 거라 생각은 하는데 도통 이해가 안되네요.
- 해결됨홍정모의 따라하며 배우는 C언어
매개변수화 라는게 무슨 뜻 인가요?
5.12 함수의 인수와 매개변수 강의에도 언급이 돼있길래 봤는데 통 이해를 못하겠어요함수가 매개변수화 되었다? 매개변수는 함수 선언할 때 void function(void)에서 괄호안에 들어가는게 매개변수 아닌가요?저는 이 매개변수가 인자를 받아오는 그릇으로 이해를 하고 있는데 이게 매개변수화 되었다는 거랑 연결이 잘 안되네요
- 미해결홍정모의 따라하며 배우는 C언어
Stolen 마지막부분 오류 질문입니다
아무리봐도 똑같이 따라쓴것 같지만 오류가 있다고 뜹니다 ㅠㅠ
- 해결됨홍정모의 따라하며 배우는 C언어
mingw-w64 폴더 설치 중 에러
2시간동안 꼼지락 거리다가 이상한 폴더에 mingw-w64가 숨어있는 것을 발견하였습니다!왜인지는 모르겠으나 과거에 C언어 코딩 독학용으로 깔았던 Dev-Cpp(데브씨플플) 폴더 안에 MinGW64라는 이름으로 있는 것 아니겠어요?!그리고 열어본 결과 존재 합디다...그래서 신나서 글을 쓰던 도중 '어? 이거 지우고 다시 깔면 에러가 안 뜨지 않을까?' 해서 지워봤습니다안 되더라구요...다시 방황하던 중 msys2를 설치하라는 답변글을 보고 설치했었던 msys2 폴더에서 자포자기한 심정으로 gcc.exe를 검색해 봤습니다그런데 요녀석이 ucrt64\bin 안에도 숨어있더라구요!그래서 이번에는 실험 그딴거 안하고 바로 연결했습니다
- 미해결홍정모의 따라하며 배우는 C언어
3.12 강의 수학적으로 존재하지 않는 식을 강행했을 때
안녕하세요. 비주얼 스튜디오에서 선생님과 똑같이 asinf() 코드를 작성하고 실행을 했는데 선생님 화면에서 나온1.570796-nan(ind)대신에8096.0000008096.000000이렇게 나옵니다. 뭐가 잘못된걸까요?
- 해결됨홍정모의 따라하며 배우는 C언어
11.2강 19:43 질문이 있습니다.
공부한 내용을 테스트해보려고 다음 코드를 작성했습니다.#include <stdio.h> #include <stdlib.h> int var_global_initialized = 1; int var_global_uninitialized; void func_test(); int main(void) { // 값이 저장되는 메모리 영역과 그 주소 // Code 영역 printf("%llu [Code]\n", (unsigned long long)"I am a String."); // Data 영역 printf("%llu [Data]\n", (unsigned long long)&var_global_initialized); // BSS 영역 printf("%llu [BSS]\n", (unsigned long long)&var_global_uninitialized); // Heap 영역 char* var_dynamic = (char*)malloc(sizeof(char) * 100); printf("%llu [Heap]\n", (unsigned long long)var_dynamic); // Stack 영역 func_test(); return 0; } void func_test() { int var_local = 0; printf("%llu [Stack]\n", (unsigned long long)&var_local); }; 메모리 영역 별 간격이 너무 작게 출력되는데 올바르게 작성한게 맞을까요..?? 참조온라인 컴파일러 링크문자열 리터럴이 저장되는 메모리 영역 링크메모리 영역별 예제 코드 링크
- 미해결홍정모의 따라하며 배우는 C언어
swap 함수에서 printf문 질문있습니다
수업 내용의 프린트 구문은 void swap(int* u, int* v) { printf("%p %p\n", u, v); int temp = *u; *u = *v; *v = temp; } 이런식으로 되어있는데 u와 v에 &기호를 붙혀주면 a, b 와 주소가 다르게 나오는데 어떤 주소인지 잘 모르겠습니다..
- 해결됨홍정모의 따라하며 배우는 C언어
10.14강 11:11 질문이 있습니다.
int(*ptr_arr)[3];위 형태가 int [3] 의 배열을 가리키는 포인터라는 것은 이해했습니다. int arr[3] = { 1, 2, 3 }; int* ptr_arr_1 = arr; printf("%d\n", ptr_arr_1[1]); // 1) int (*ptr_arr_2)[3] = arr; printf("%d\n", ptr_arr_2[0]); // 2) printf("%d\n", ptr_arr_2[0][1]); // 3) printf("%d\n", (*ptr_arr_2)[1]); // 4)1)의 경우 지금까지 써왔기 때문에 왜 arr의 1번째 요소가 나오는지 이해했습니다.2)의 경우 printf 함수 인수가 int [3]이라는 경고가 나오고3), 4)의 경우 arr의 1번째 요소가 출력되는 것을 확인했습니다. int* ptr_arr_1 = arr; 은 1번의 배열 역참조 연산으로 배열 요소의 값에 접근할 수 있지만int (*ptr_arr_2)[3] = arr; 은 2번의 배열 역참조 연산으로 배열 요소의 값이 접근할 수 있는 것 같은데 가리키는 배열이 똑같은 1차원 배열인데도 왜 이런 차이가 발생하는 걸까요..??
- 미해결홍정모의 따라하며 배우는 C언어
char str[]과 char * str 의 차이는 무엇인가요?
22:16초에서 char str[]을 쓰시는데 평소에 []이런식으로 안에 아무것도 할당되어있지 않은 배열의 역할과 포인터와의 차이가 너무 궁금해서 질문드립니다. 포인터 알기를 겉핥기로 알고있어서요. 감사합니다!
- 해결됨홍정모의 따라하며 배우는 C언어
swap 함수 작성하기
홍 선생님께선 swap 함수에서 temp를 선언하실 때 정수형 자료형으로 선언하셨는데 저는 정수형 포인터 변수로 선언하고자 했어요.void swap(int* a, int* b){ int* temp = NULL; *temp = *a; *a = *b; *b = *temp; }이렇게 함수를 작성해서 코드를 실행하려고 하는데 빌드는 성공했지만 실행은 실패했어요.다만 함수를 아래처럼 고치면 정상적으로 작동하더군요.void swap(int* a, int* b){ int c; int* temp = &c; *temp = *a; *a = *b; *b = *temp;}혹시 첫 번째 코드에서 temp 변수의 주소를 NULL로 초기화 한 부분이 문제였을까요?
- 미해결홍정모의 따라하며 배우는 C언어
배열의 이중포인터
안녕하세요학습중 개념에 혼동이 생겨 질문글을 남깁니다.강의는 10.13, 4분 18초 쯤입니다. 예컨대*(*(parr + 1) + 2)가 있다 하면 이것이 어떤 값을 나타내는지 그 과정 중에서 혼란스러운 부분이 몇 개 있습니다. 질문과 더불어 제가 잘못 설명하는 부분이 있으면 지적해주시면 감사하겠습니다. parr + 1는 포인터parr 배열의 2번 째 원소(arr[1])의 첫 주소, 즉 4의 주소를 가리키는 포인터입니다. 한편, *라는 기호는 포인터변수에 저장된 주소에 접근하여 그쪽에 저장된 데이터를 들고오는 역참조의 기능을 수행케 합니다. 그렇다면 *이 붙은 *(parr + 1)에서는 4의 주소로 접근하여 *에 의해 4라는 값을 역참조해오게 됩니다. 하지만 그러면 *(4 + 2)가 되는데 이는 전혀 말이 안 되고 본래의 +2는 포인터의 산술연산을 위한 것이기에 *(parr + 1)는 모종의 포인터가 돼야 하고 강의 중에서도 교수님이 그렇게 말씀하셨습니다.(제가 오해하고 있는 부분과 달리 가장 밖에 있는 *는 실제로 역참조의 기능을 가지는 것이 자명한데도요...) 그래서 정리하자면 *(parr + 1)는 어떤 주소를 나타내것인지 아니면 모종의 포인터를 의미하는 건지 궁금하며 그리고*(*(parr + 1) + 2)의 전체적인 플로우를 정확하게 이해하고 싶습니다. 감사합니다.
- 미해결홍정모의 따라하며 배우는 C언어
디버깅 관련 질문
#include <stdio.h> #include <ctype.h> #include <stdbool.h> #define STOP '.' int main() { char c; int n_chars = 0; int n_lines = 0; int n_words = 0; bool word_flag = false; bool line_flag = false; printf("Enter text :\n"); while((c = getchar()) != STOP){ if(!isspace(c)){ n_chars++; } if(!isspace(c) && !line_flag){ n_lines++; line_flag = true; } if(c == '\n'){ line_flag = false; } if(!isspace(c) && !word_flag){ n_words++; word_flag = true; } if(isspace(c)){ word_flag = false; } } printf("Charaters = %d, Words = %d, Lines = %d\n", n_chars, n_words, n_lines); return 0; } 강의 내용 예제 코드인데 문자로 입력해야 디버깅이 가능한 예제 코드들은 어떻게 디버깅 하는지 알 수 있을까요??
- 미해결홍정모의 따라하며 배우는 C언어
디버거 사용법을 따라하다가 강의와는 다르게 진행되는 것 같아서 문의 드립니다...
브래이크 포인트를 표시하고 디버그스타트를 눌렀는데 강의처럼 안되어서 문의 드립니다.
- 해결됨홍정모의 따라하며 배우는 C언어
매개변수는 포인터, 함수 내에서는 배열?
안녕하세요강의 듣던 중 궁금한 게 생겨 여쭙게 됩니다.double average(double * data_array, int n) { printf("Size = %zd in function average\n", sizeof(data_array)); double avg = 0.0; for (int i = 0; i < n; ++i) { avg += data_array[i]; } avg /= (double)n; return avg; }(1)위의 코드에서 average함수의 매개변수로 포인터변수인 data_array가 들어와 있습니다. double * data_array를 arr1[]로 바꿔도 시스템은 이것을 arr1배열의 첫주소를 가지는 포인터변수 double * (배열명)로 인식한다는 것이 정확한 이해인가요? (2)average함수의 매개변수에 배열을 넣든 뭘 하든 시스템은 배열의 첫 주소를 가지는 포인터 변수로 읽어버립니다. 하지만 코드의 중간 쯤에 있는 avg += data_array[i];에서data_array[i]는 배열의 문법입니다. 물론, 예컨대 arr배열이 있을 때*(arr+10)와array[10]가 같은 요소를 가져온다는 것은 압니다. 하지만 average함수는 기존에 저희가 적은 배열의 정의를 못 만나봤고, 즉 알지 못하고 그 배열의 첫 주소만 가지고 있는 포인터변수만을 가지고 있습니다. 이 때 data_array[i]라고 작성하면 시스템이 이것을 내부적으로 *(data_array + i) 즉, (본 강의에서는 배열명이 arr1 이었습니다) *(arr1 + i)로 바꿔버리나요? 즉, 다시 말해 배열arr1 을 알지 못하고 배열arr1의 첫 주소값이 있는 포인터 변수만을 가지고 있는 함수 average가 어떻게 포인터 문법이 아닌 배열 문법을 쓰는지 궁금합니다. 긴 글 읽어주셔서 감사합니다.
- 미해결홍정모의 따라하며 배우는 C언어
포인터 주소 대입
안녕하세요 int *a = &b;코드가 위와 같을 때는 변수 b의 주소를 포인터변수 a에 넣는 걸로 이해했습니다.int *a = 123;코드가 위와 같을 때도 포인터변수 a 에 123이라는 메모리 주소를 넣는다고 이해해도 될까요?
- 미해결홍정모의 따라하며 배우는 C언어
따배씨 4-2 4:38초 내용이 이해가 어렵습니다.
안녕하세요, 최근 따배씨 열심히 수강하고 있는 학생입니다.수강 중 교수님께서 말씀하신 부분의 이해가 어려워 질문 올려봅니다."다른 프로그램에서 sizeof가 우리에게 알려주는 값이 범위, 자료형이 unsigned int가 아닐 수 있어서 이식성을 높이기 위해 size_t를 사용한다." 라고 말씀하셨는데 어차피 size_t도 unsigned int 아닌가요?? 결국 unsigned int에 해당하지 않는 자료형이 들어오면 size_t도 sizeof와 다를 바 없다고 이해했는데, 혹시 제가 틀리게 이해하는 부분이 있을까요?? 있다면 가르침을 부탁드리겠습니다.
- 해결됨홍정모의 따라하며 배우는 C언어
10.6강 1번 문제 1차원 배열을 2차원 배열로 만드는 문제
double year2021[MONTHS] = { -2.4, 2.7, 9.0, 14.2, 17.1, 22.8, 28.1, 25.9, 22.6, 15.6, 8.2, 0.6 }; double year2022[MONTHS] = { -2.2, -1.1, 7.7, 14.8, 19.1, 23.3, 27.3, 25.7, 22.4, 14.6, 10.0, -2.8 }; double year2023[MONTHS] = { -1.5, 2.3, 9.8, 13.8, 19.5, 23.4, 26.7, 27.2, 23.7, 15.8, 6.8, 3.1 }; // 1. 1차원 배열을 2차원 배열로 구현 // 배열명의 값은 배열의 시작 주소와 같다. double* temperature[] = { year2021, year2022, year2023 }; printf("%zd %zd %zd %zd\n", sizeof(temperature), sizeof(temperature[0]), sizeof(*temperature[0]), sizeof(year2021) ); 1차원 배열(2021년, 2022년, 2023년)의 주소를 2차원 포인터 배열의 요소로 초기화했습니다.// 1. 1차원 배열을 2차원 배열로 구현 // 배열명의 값은 배열의 시작 주소와 같다. double* temperature[] = { year2021, year2022, year2023 }; 2중 for문의 내부 for문의 조건부를 지정할 때 sizeof 연산자를 이용해서 아래같은 방식으로 구현하려고 했습니다.size_t col = sizeof(temperature[0]) / sizeof[double]; for(int j = 0; j < sizeof(temperature) / sizeof(temperature[0]); ++j) { for(int i = 0; i < col; ++i) { // (j, i)번째 요소 출력문 } } 제가 생각한건 'temperature[0]에 저장된 값이 year2021의 메모리 시작 주소와 같으므로 temperature[0]의 값을 역참조하면 year2021 배열 전체를 가리킬 것이다' 였는데sizeof(*temperature[0]);이 값이 year2021의 0번째 double 요소로 역참조되서 그런지 결과값이 8로 잡혀서size_t col = sizeof(temperature[0]) / sizeof[double];col의 값이 1로 계산됩니다.. 어떻게 하면 temperature[0]을 이용해서 배열 year2021의 전체 길이를 반환할 수 있을까요..??
- 미해결홍정모의 따라하며 배우는 C언어
재출력이 안돼요.
파일에 저장할 텍스트를 입력하는 것까지는 문제가 없는데 while (fscanf(fp,"%s",words) != EOF) fprintf(stdout,"%s\n",words);이 문장이 제대로 실행되지 않는 것 같아요