월 19,800원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 해결됨홍정모의 따라하며 배우는 C언어
NULL을 이해한건지 알고싶습니다.
안녕하세요, 질문이 있습니다. 제가 이해한게 맞는건지 확인하고자 합니다. int* a = NULL; 을 사용한다는 것은 int b; scanf("%d", &b) if (b % 2 == 0) a = &b; 처럼 입력값에 따라 실제 메모리 공간을 할당받은 메모리주소를 가진 변수b를 조건이 true일 경우 제대로 대입이되서 사용이 가능한거고 조건이 false일 경우 그대로 NULL인 값을 포인터 변수 a가 가지고 있을때 포인터 변수 a를 이용하는 구문을 만났을때 printf("%p %d", a, *a); 이대로 실행하면 런타임 에러가 발생하기 때문에 이걸 방지하고자 if (a != NULL) printf("%p %d", a, *a); 이것처럼 조건을 걸어 제대로 값을 대입받았다면 실행이 되고 그러지 아니하면 실행이 안되고 그냥 런타임 에러 없이 넘어가기 위함 인가요? 제가 한번더 확인하고자 NULL 말고 int *a = 1; 을 한다음 if (a != 1) printf("%p %d", a, *a); 을 해도 런타임 에러없이 그냥 넘어가더라구요 그래서 NULL로 초기화 해준게 a포인터 변수를 이용하는 구문을 만났을때 그냥 적어두면 오류가 발생하니 조건의 기준을 정하기 위해 임시로 NULL을 넣은게 아닌가 생각했습니다. * 두번째 질문. * NULL을 눌러서 vcruntime.h 로 들어가서 보니 ((void *) 0) 이라고 define으로 되어 있더라구요 이 의미는 다른의미가 있나요? 아니면 0과 같나요? 실제 NULL하고, 0을 int *a 포인터 변수에 초기화를해서 %p로 출력해보니까 둘다 같은 16진수인 00000000 으로 나오더라구요. 같은건지 아니면 다른의미가 있는데 이어지는 강의에서 나오는건지 궁금합니다.
- 해결됨홍정모의 따라하며 배우는 C언어
21:34 16진수 이해 부족
출력 하면 b.ap1은 1.7400000000000P+4 와 같다고 이해하면 되는건가요? 16진수는 1,2,3,4,5,6,7,8,9,A,B,C,D,E,F 로 표현하는데 b.ap1은 왜 저런 숫자가 나오는지 잘 이해가 가질 않아요.. 머릿속이 복잡해서 질문을 제대로 한건지도 모르겠네요 ㅠ
- 미해결홍정모의 따라하며 배우는 C언어
export template options 화면에서 output location을 변경할 수 있습니까?
export template할때 export template options 화면에서 output location을 변경할 수 있습니까? 저의 경우에는 이ㅏ래 와같은 path가 이미 입력이 되어 있습니다 C:\Users\young\OneDrive\Documents\Visual Studio 2019\My Exported Templates\MyFirstProj.zip
- 미해결홍정모의 따라하며 배우는 C언어
인클루드 가드
인클루드 가드에서 헤더 A.h 에 대해서 1. A_H 2. __A_H__ 이렇게 나뉘는 경우가 존재하는 것 같은데 1.의 경우 사용자 헤더파일이고 2.의 경우 <> 표준라이브러리 중복을 확인할 때 사용하는 것 일까요?
- 미해결홍정모의 따라하며 배우는 C언어
주기억장치와 보조기억장치에 대한 궁금증
제가 강의를 보다가 궁금한 부분이 생겨서 질문을 올립니다. 우선 보조 기억장치인 SSD나 HDD는 256GB 혹은 많게는 1TB정도의 저장용량을 갖고있지만, 주 기억장치인 RAM은 4GB, 16GB, 32GB같이 용량이 보조 기억장치보다 상대적으로 적은 용량을 갖고 있는걸로 알고있습니다. 하지만 주 기억장치는 전원을 끄면 데이터가 날라가는 형식이므로 보조 기억장치에서 데이터를 복사해와서 쓴다고 영상에서 알게되었는데 저장용량의 크기가 엄청나게 많이 차이가 나는 두 기억장치의 관계에서 컴퓨터를 켰을 때 어떻게 보조기억장치의 데이터를 주 기억장치로 복사를 하는지 궁금합니다. 운영체제나 다른 데이터들의 용량을 어떻게 받아내는지 말입니다..
- 해결됨홍정모의 따라하며 배우는 C언어
20:00 질문이요!
char ch; while ((ch = getchar()) != '\n') { for (int i = 0; i < 10; ++i) { if (ch == 'i') ch = '*'; } putchar(ch); } 제가 짜본 코드는 선생님과 다르게 for문에서 숫자에 ' '를 붙이지않고 if문에서 i에 'i'로 바꿔줌으로써 결국 선생님이랑 제 코드가 같은 맥락이라고 봤는데 제 코드로 실행을하면 숫자가 별로 표시되지않고 그냥 숫자로 나옵니다. 왜그런건지 궁금합니다.
- 미해결홍정모의 따라하며 배우는 C언어
함수부분
함수 부분을 바로 넘어가셨는데 저는 그 함수부분이 잘 이해가 안되어서요.. 죄송하시만 저 함수가 어떻게 작동하는지 설명해주실 수 있나요? 또 while()괄호안에 getchar()인경우와 c = getchar()인 경우는 차이점이 무엇인가요??
- 미해결홍정모의 따라하며 배우는 C언어
:
case 'a' : 에서 : 는 무엇인가요?
- 미해결홍정모의 따라하며 배우는 C언어
질문 있습니다
바로 전 질문 8:26에 대해 답변해주신 부분 중 일부 "ar1은 a pointer to [3] int 이자 그냥 int[2][3] 입니다." 와 관련해서 질문을 좀 드립니다. 1. ar1[0][0]은 배열의 요소 값을 나타내고, ar1[0]=&ar1[0][0] a pointer to int ar1=&ar1[0] a pointer to [3] int &ar1 a pointer to [2][3] int 이렇게 정리했는데 맞나요? 2. ar1은 a pointer to [3] int 이자 그냥 int[2][3]입니다 에서 궁금한 점은 ar1이라는 이름이 코드에서 사용했을떄는 a pointer to [3] int 용도로만 사용되는거 맞나요? 그냥 int[2][3]이라는 말은 ar1이 int[2][3]으로 정의되있다는거고 이걸 가리키려면 &ar1을 사용하면 되는거죠? 질문 이해하셨으면 좋겠네요 ㅠ.ㅠ 감사합니다.
- 미해결홍정모의 따라하며 배우는 C언어
printf 에서는 왜 & 를 사용하지 않는 것인가요?
안녕하세요, scanf 에서는 메모리의 주소에 접근해서 입력값을 넣어줘야 하기 때문에 & 를 사용한다고 하셨는데 그렇다면 printf 에서는 어떻게 & 를 사용하지 않고, 그냥 변수명만 넣어줘도 컴퓨터가 값을 가져올 수 있는 것인가요? 원리가 궁금해서 질문 남겨놓습니다.
- 미해결홍정모의 따라하며 배우는 C언어
#define 질문이요!
삭제된 글입니다
- 해결됨홍정모의 따라하며 배우는 C언어
5:40 질문이요!
#define NUM_DAYS 5 int main(void) { int a = 5; int b[NUM_DAYS]; printf("%d\n", sizeof(a)); printf("%d\n", sizeof(b)); return 0; } 여기서 제가 생각했던것은 a가 int형 이므로 4byte를 가질거라고 생각했고, b도 마찬자기로 int형이므로 4byte를 가질거라고 생각해서 4 4 가 출력될거라고 생각했습니다. 그런데 출력값은 4 20이 나왔습니다. 왜그런건가요? 선생님께서 5:40 쯤에 선생님께선 '타입의크기 곱하기 레터럴상수'를 해주시는데, 그러면 printf("%d\n", sizeof(a)); 이것도 '타입의크기 곱하기 레터럴 상수'로 해줘야되는거 아닌가요? 출력값이 20이 나와야되는것 아닌가요?
- 해결됨홍정모의 따라하며 배우는 C언어
for문 질문드려요!
for (int r = 0; r < 5; ++r) { for (char c = 'A'; c < 75; ++c) printf("%c ", c); printf("\n"); } 를 실행하면 A B C D E F G H I J A B C D E F G H I J A B C D E F G H I J A B C D E F G H I J A B C D E F G H I J 이렇게 나오더라고요. 제 생각은 A B C D . . . 이렇게 실행될 거라고 생각했거든요. 저는 안쪽에 있는 for문에서 printf("%c ", c);와 printf("\n");가 순차적으로 실행될거라고 생각했는데, 실제로는 printf("%c ", c);만 반복되고 안쪽에 있는 for문이 끝나야 printf("%c ", c);와 printf("\n");가 순차적으로 실행되더라고요. 왜그런건지 궁금합니다.
- 해결됨홍정모의 따라하며 배우는 C언어
02:30초 질문드립니다.
02분 30초쯤부터 선생님께서 말씀하시기를 while문 비교를 하기전에 입력을 한번은 꼭 받아야 한다고 하셨는데, int ps = 0; while (ps != 337) { printf("Enter secret code : "); scanf("%d", &ps); } printf("Good!"); 저는 이렇게 while문에 하나만 달랑 넣고 만들어서 실행을 해봤는데 이상이 없더라구요. 이게 정상작동되면 do while문이 필요없지않나요?
- 해결됨홍정모의 따라하며 배우는 C언어
while문 관련 질문입니다.
문득 강의를 보다가 중괄호 없는 코드를 만들어봤는데요. 실행을 하면 i가 i++ 이기때문에 0에서 3까지 늘어나서 3이 출력이 될 줄 알았는데 4가 출력이 되네요. 왜 4가 출력이 됐는지 궁금합니다. 디버깅을 해봐도 원인을 알 수가 없어서 질문드려요. int i; i = 0; while (i++ < 3); printf("%i\n", i);
- 해결됨홍정모의 따라하며 배우는 C언어
재귀 호출 개념에 대해서 이해한건지 확인 부탁드립니다.
안녕하세요, 선생님 제 나름대로 이해할려고 풀어서 이해해봤는데 이게 맞는건지 확인해보고 싶습니당 선생님이 작성한 예제에서 이해한 내용은 my_func(my_func(my_func(my_func))) 이런식으로 실행이 되고 스택도 n(n(n(n))) 이런식으로 쌓인다고 이해했습니다. 그리고 반대로 돌아갈때도 my_func(my_func(my_func(my_func))) 에서 my_func(my_func(my_func)) my_func(my_func) 이런식으로 돌아가는 형태로 이해했습니다. 그러면 스택에서도 n(n(n)) -> n(n) 이런식으로 위에서 없어지는 걸로 이해했습니다 그래서 이걸 좀 더 명확히 이해하고자 저의 생각한대로 코드를 작성해서 디버거로 테스트를 해보았습니다. 제가 이해한 형식대로 코드를 작성을 해보았더니 돌아가는 형태를 확인했습니다. main함수에서 A함수를 호출하고 A함수에서 B함수를 호출하는 형태로 구성을 해보면 (main -> A -> B) B함수의 코드들이 끝나면 바로 main 함수로 돌아갈줄 알았는데 A함수로 돌아가고 그 다음 A함수에서 main함수로 돌아가는걸 확인했습니다. (B -> A -> main) 디버거로 돌아가는 걸 찍어보았습니다. 마지막 함수인 test3이 종료가 되면 바로 main 함수로 가서 끝나는게 아닌 test2로 가는걸 화살표로 확인할 수 있었습니다. 게다가 test2로 돌아갈때 test2함수의 영역 끝인 } 로 돌아가는것이 아닌 test3함수를 호출한 구문으로 돌아가는것을 확인하였습니다. 그 다음 f11을 눌러 확인해본 결과 test3함수의 변수인 n이 스택에서 사라지고 test2로 돌아와 n변수를 printf로 재출력 해본 결과 스택에 남아있었던 test2의 n변수가 출력이 되어 기존에 출력했었던 거와 메모리주소가 동일하단걸 확인하였습니다. 즉 실행이 되었던 되감기 형태로 돌아가서 종료가 된다는걸로 이해했습니다만 제가 이해한게 맞는건지 확인 부탁드리겠습니다.. ㅜㅜ
- 미해결홍정모의 따라하며 배우는 C언어
for (i = 1; i <= 10; i++)에서 i ++은 ;를 안붙여도 되는건가요?
for (i = 1; i <= 10; i++)에서 i ++은 ;를 안붙여도 되는건가요?
- 미해결홍정모의 따라하며 배우는 C언어
2차원과 1차원 배열은 같은 것인가요??
int *ptr = arr //>>1차원 배열에서 int *ptr = &arr[0][0];//>>2차원 배열에서 &연산자나 [][] 이 없으면 에러가 납니다 그런데 값은 정상적으로 출력이 됩니다 왜 그런지 잘 모르겠습니다 또한 2차원 배열 arr[0][0]의 주소를 출력해보려 해도 출력되지 않습니다 이유를 알고 싶습니다 너무 궁금합니다
- 미해결홍정모의 따라하며 배우는 C언어
파일이 열리는데 아무것도 표시되지 않습니다.
int main() { int c; FILE *file = NULL; char file_name[] ="my_file.txt"; file = fopen(file_name,"r"); if (file == NULL) { printf("failure"); exit(1); } while ((c = getc(file)) != EOF) putchar; fclose(file); return 0; } 실행을 시키면 사진처럼 아무것도 뜨지 않습니다. 파일에는 hi를 입력시켜서 저장한 상태입니다. 뭐가 잘못된 걸까요?
- 미해결홍정모의 따라하며 배우는 C언어
원하는 값이 안 나옵니다.
long get_long(void); int main() { long num1; while (1) { printf("Input an integer 1 between 100.\n"); num1 = get_long(); if (num1 > 1 && num1 < 100) { printf("okay!"); break; } else printf("try again!"); } return 0; } long get_long(void) { long num; char c; printf("Input an integer and press enter.\n"); while (scanf("%ld", &num) != 1) { printf("your input ("); while ((c = getchar()) != '\n') putchar(c); printf(") is not an integer.\n"); } printf("your input (%ld) is correct!", num); } 제가 이렇게 작성을 했는데요 숫자가 저 범위에 해당하지 않는 것을 넣어도 if (num1 > 1 && num1 < 100)을 수행하길래 디버그를 해봤는데요 제가 처음에 10000을 입력했는데 이게 함수 get_long를 거쳐서 num1이 34가 됐는데 왜 이렇게 된 걸까요? 뭐가 잘못된 걸까요?