월 19,800원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결홍정모의 따라하며 배우는 C언어
#define _CRT_SECURE_NO_WARNINGS에 관해서
#define _CRT_SECURE_NO_WARNINGS를 #include <stdio.h> 이전에 쓰지 않고, 이후에 쓰면 오류가 뜨던데 왜 그런건가요?
- 미해결홍정모의 따라하며 배우는 C언어
텍스트 파일을 불러와서 거기에 있는 내용으로 여러가지를 하려고 합니다
안녕하세요. 숙제를 하면서 찾아보다가 강의가 좋은것 같아서 결재하고 듣고있습니다. 텍스트 파일을 불러와서, 텍스트파일에 들어있는 내용을 바탕으로 평균값과 합, 여러가지를 구하려고 하는데요 예를 들어 코로나 검사결과.txt 를 불러온다고 하였을때 txt 파일 안에는 포맷 형식이 sex, age, height, weight, +/-, address 이런식으로 가정하였을경우, M 28 140 50 + 서울 F 35 170 40 - 인천 등등 무수히 많은 자료가 있다고 하였을때, 시작을 어떻게 각 포맷을 지정하여 불러올수 있을까요?
- 미해결홍정모의 따라하며 배우는 C언어
고정너비 정수에 대한 질문입니다
int 타입은 하드웨어 의존 가능성이 있으므로 플랫폼에 따라 4바이트 또는 2바이트로 실행이 될 수 있으므로 이식성에 문제가 있을 수 있음을 설명하셨습니다. 그래서 플랫폼 independent하게 4바이트로 고정 될 수 있는 int32_t라는 타입이 있는 것으로 이해가 됩니다. 그러나 stdint.h에 정의되고 있는 아래 typedef에 의하면 그냥 원래 int 를 int32_t라는 이름으로 재정의하고 있을 뿐입니다. 그런데 왜 이것이 32비트로 고정이 되는지 궁급합니다. 즉, int32_t i 로 i 변수를 define 한다는 것은 int i 와 다를 바가 없는 것으로 이해가 됩니다. 아시겠지만 tydef는 구글링 한 바로는 아래와 같습니다. typedef int int32_t; The typedef is a keyword used in C programming to provide some meaningful names to the already existing variable in the C program. It behaves similarly as we define the alias for the commands. In short, we can say that this keyword is used to redefine the name of an already existing variable.
- 미해결홍정모의 따라하며 배우는 C언어
형변환 에러가 안뜨는 경우도 있나요?
강의에서 확인한 거와 마찬가지로 float으로 선언된 f의 경우 integer 로 넣을시 에러가 떠야 정상인데 제 컴파일러같은 경우에는 어떠한 에러도안뜨고 컴파일이 되버리네요.. 혹시 어떠한 이유때문에 이러는건지 알고싶습니다. visual studio 2019입니다.
- 미해결홍정모의 따라하며 배우는 C언어
overflow 경고
안녕하세요. 맥북을 사용하고 있어서, 강의에서 사용중인 vs2019가 아닌 vscode를 사용 중 입니다. 실행해보아도 오류에 안잡히는데 어떤 부분이 잘못된건가요?
- 미해결홍정모의 따라하며 배우는 C언어
강의 25분 10초 쯤 질문입니다.
안녕하세요? 강의 25분 10초 쯤의 내용에서 질문 있습니다. sizeof(int)는 4byte이고 거기에 +1을 하니까 float arr4[sizeof(int)+1] == float arr4[5] 두 표현이 같은 의미라고 하셨는데 sizeof(int)는 4바이트이고 float 자료형의 배열의 한 칸(+1을 한 칸 추가로 본다면)도 4바이트 취급을 한다면 5가 아니라 8이 되어야 할 것 같은데 왜 단위가 같지 않음에도 5가 되는지 궁금합니다.
- 미해결홍정모의 따라하며 배우는 C언어
char str2[10] = {'H', 'I'};
char str2[10] = {'H', 'I'}; 는 H, I라는 문자 2개를 배열에 넣어주었을 뿐인데 마지막에 널문자를 넣어주지 않아도 괜찮은 건가요??
- 미해결홍정모의 따라하며 배우는 C언어
포인터 관련된 사소한 궁금증입니다!
안녕하세요! 이번 강의를 듣고 실습을 해보았는데 실행 결과에 대해 의문이 생겼습니다. 코드의 14번째 줄에서 temp앞에 *을 붙인 경우와 뗀 경우의결과인데요 ptr1에 저장된 주소값도 내부적으로는 이진수이므로 temp에 저장이되고 그게 다시 ptr2에 저장이된다고 받아들였습니다. 그래서 결과적으로 ptr2가 num1을 가리키게 되었다고 생각했습니다. 그런데 출력된 형식이 코드의 14번째 줄에서 temp앞에 *을 붙인 경우와 달라서 제가 뭔가 잘못생각한것같아서 정정 부탁드려요 실제로 저처럼 코드를 짜는 경우는 없겠지만 그래도 설명 부탁드립니다! 감사합니다.
- 해결됨홍정모의 따라하며 배우는 C언어
최소크기인데 값의 범위에서 벗어나면 오버플로우되는 건 왜 그런가요?
char, int ...은 최소 크기가 각각 1byte, (2byte or )4 byte ...인데 자료형 데이터의 값이 -128 ~ 127, (-32,768 ~ 32,767 or) -2,147,483,648 ~ 2,147,483,647 ...을 벗어나면 overflow가 발생하는 이유가 무엇인가요? 최소 크기라면 그 이상을 넘어가는 값은 long long int로 지정해줄 필요도 없는 거 아닌가요?
- 미해결홍정모의 따라하며 배우는 C언어
1차원을 2,3차원으로 사용하는 이유
1차원 동적할당 한 것을 2,3차원처럼 사용하는 이유가 뭔가요? 밑에 사진처럼 동적할당 2번하는것과 차이가 있나요?
- 미해결홍정모의 따라하며 배우는 C언어
swap함수의 배열에서의 주소
#include <stdio.h> #define N 8 void swap(int A[], int a, int b) { int temp; temp = A[a]; A[a] = A[b]; A[b] = temp; printf("\n%p\n", &A[0]); } int main(void) { int A[N] = { 4, 2, 8, 1, 7, 3, 9, 6 }; printf("%p", &A[0]); swap(A, 3, 5); printf("%d\n%d", A[3], A[5]); } 이 코드는 제가 짠 코드인데요, 선생님 강좌에서는 함수의 변수주소와 메인함수의 변수주소가(여기서는 배열A)다르다고 해서 포인터를 써서 해결하셨는데 제가 짠 코드는 swap된 상태로 출력이 되고 또한 swap 함수에서의 배열 A[0]주소와 메인함수에서의A[0]주소가 같게 나오네요. 왜 그런지 알려주세요.
- 미해결홍정모의 따라하며 배우는 C언어
프로토타이핑에 관한 질문입니다
강의에서 void로 선언된 함수의 경우 main함수 뒤에 선언할 경우에 제일 앞부분에 선언해야 에러가 뜨지 않는다는것을 알았는데요. int로 선언된 함수의 경우 void로 선언한 함수와 다르게 앞부분에도 선언을 안해도 에러없이 출력이 됩니다. 혹시 왜이런건지 알수 있을까요? ( int 뿐만아니라 float, long 일때도 마찬가지로 오류없이 컴파일되네요) 그리고 다른언어(C#,JAVA) 같은경우에는 void함수를 선언할때 main 함수 뒤에 선언하고 굳이 앞부분에 프로토타이핑을 안해도 자동으로 함수를 불러오던데, 이건 각 언어만의 특징이라 그런건지 아니면 C언어로부터 개선되서 이렇게 가능하게 된건지 알고싶습니다. 질문이 많네요 ㅠㅠ
- 해결됨홍정모의 따라하며 배우는 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' : 에서 : 는 무엇인가요?