묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결홍정모의 따라하며 배우는 C언어
포인터 2차원 배열
안녕하세요 포인터 2차원 배열 9분 대부터 다시 공부하다가 이해가 가지 않아 문의드립니다.위의 코드에서 *(*(parr + j) + i));와 (parr[j] + i);가 헷갈립니다. 일단 제가 처음에 이해한 대로 설명드려보겠습니다. parr은 parr[0]을 가리키는 포인터이며 즉 이 포인터가 최종적으로 가리키는 공간은 &arr0[0] 즉 arr 배열의 첫번째 공간입니다. 이 상태에서 예를 들어 parr + 1을 하면 &arr0[1]로 이동하며 를 하면 그 값은 2 이런 식이라고 생각했습니다. 또한 parr[1] + 1에서 parr[1]은 포인터이며 이 포인터가 가리키는 공간은 &arr1[0]이며 이 상태에서 포인터 연산 +1을 해주면 &arr1[1]이고 이를 로 접근하면 그 값은 5로 이해했습니다. 그치만 실제 결과를 보면 위에서 제가 제시한 두 코드의 결과는 같아야 되더군요. 그렇다면 그 결과를 도출하기 위해 다시 *(*(parr + j) + i));를 설명드리겠습니다. parr 배열 이름 자체는 &parr[0]이며 이 상태에서 포인터 연산 + 1을 하면 &parr[0] = &arr0[0], &parr[0] + 1 = &arr0[1]이 아니라 &parr[0] + 1 = &parr[1]이며 이 상태에서 로 접근하면 그 값은 4, 4+1은 5이며 이를 *로 간접 접근하면..이런 식인데 어디부터 제 개념이해가 잘못됐는지 모르겠습니다.. parr[1]로 먼저 arr1[0]에 접근한 뒤 포인터 연산 +1을 하는 것과 parr 자체에서 포인터 연산 +1을 하면 결과가 정확히 어떻게 다르며 *(*(parr + j) + i)) 이 코드의 정확한 개념이 궁금합니다.
-
해결됨홍정모의 따라하며 배우는 C언어
2.8 키워드와 예약어 질문
안녕하세요. 강의를 듣고 키워드와 예약어 개념이 조금 헷갈려서 질문 드립니다.키워드는 문법을 구분하기 위해 사용되는 단어이고, 예약어는 말 그대로 프로그래밍 언어가 문법에 사용하려고 예약해둔 단어들로 알고 있습니다.그렇다면 헤더가 없어도 문법적으로 사용되는 단어들은 키워드에 포함되고, 헤더가 없으면 변수 혹은 함수의 이름으로 쓸 수 있으나 include 하는 순간 이름으로 쓸 수 없는 단어들을 예약어로 보는 건가요? 아니면 전자, 후자 모두 키워드이자 예약어인지 궁금합니다. 감사합니다.
-
미해결홍정모의 따라하며 배우는 C언어
강의자료 질문
혹시 ppt 강의자료는 따로 제공받을 수 없나요??
-
미해결정혜경 판타스틱 자료구조 in C
음...
addfirst 랑 addlast 를 왜 나누는지 이해가 안됩니다.addlast 코드만 있어도 추가하는데는 문제가 없어보이는데...
-
해결됨홍정모의 따라하며 배우는 C언어
예제 질문입니다
교수님 예제에서 print_binary 함수를 만드실때 remainder 라는 변수를 쓰셨는데다른 변수를 쓰지 않고 파라미터에서(?) 받아온 num 변수만을 사용해 밑에처럼 짜면 문제가 생기나요?
-
미해결홍정모의 따라하며 배우는 C언어
[5.1 반복 루프] goto문 결과 질문
5.1 강의의 6:11초쯤에서 goto문의 출력 결과로 1~9까지만 나오고 10은 안 나왔는데 나중에 설명한다고 하셨는데 설명을 안 하셔서 질문 남깁니다.교수님이 작성하신 코드에서는 n이 10일 때 printf를 안 하고 바로 goto out;이 실행되기 때문에 결과가 9까지 출력되는 것 맞나요?goto문으로 1~10까지 출력되는 반복문을 만들려면 n == 10이 아니라 n == 11로 써야하는 것 맞을까요?
-
해결됨독하게 되새기는 C 프로그래밍
부동소수점 비교
안녕하세요! 부동소수점 비교 관련 질문이 있습니다.그간 부동 소수점(float 및 double) 비교 시 아무 생각없이 썼는데요;; 표현 범위를 넘어갔을 때 숫자가 보장이 안되어서 == 연산 오류가 있는것은 이해 하였는데요두 수의 작고 큰지 (<,>)에 대한 비교에 대해서는 오차가 없는 것 인지 궁금합니다. 감사합니다!
-
해결됨홍정모의 따라하며 배우는 C언어
continue의 용도
이번 예제의 count 함수와 get_first_char함수에 사용된 continue; 들은 어떤 의미를 가지나요??7.10 강의에서 말씀하신 '세미콜론만 있으면 잘 안보이기때문에 단지 눈에 잘 보이기 위한' 용도인가요?
-
해결됨홍정모의 따라하며 배우는 C언어
sizeof operator malloc
4.2강 10:26 부분에서 int* int_ptr = NULL;int_ptr = (int*)malloc(sizeof(int) * 30); 위와같은 코드를 printf("size of pointer %zu bytes\n", sizeof(int_ptr));이렇게 실행했더니 결과값이 malloc을 지우나 안지우나 8이 나오는데 이것또한 운영체제의 32인지 64인지에 따라 다른건가요?
-
미해결홍정모의 따라하며 배우는 C언어
4.7 %f, %g, %% 질문
printf("%f %f %lf\n", 3.141592f, d, d);의 결과로 3.141593이 출력되던데 왜 3.141592가 아니라 갑자기 3.141593이 출력되는 건가요?printf("%g %g\n", 123456.789, 1234567.89);의 결과로 123456이 아니라 123457이 출력되는 이유가 무엇인가요? %g라는 게 정확히 어떤 건지 궁금합니다강의 코드의 주석에printf("%%\n", d); // Note the warning. d is ignored.라고 적혀져 있던데 warning이 발생하는 이유는 무엇이고 d가 무시된다는 것은 무엇인가요?이 주석에 대해서도 설명해주시면 감사하겠습니다
-
미해결홍정모의 따라하며 배우는 C언어
scanf에 녹색줄 없애기
안녕하세요 이전까지 강의 들을때는 scanf에 녹색줄이 뜨지 않았는데요, 이번에 비주얼 스튜디오를 새로 깔고 나니 계속 scanf에 녹색줄이 뜨면서 " 반환값이 무시되었습니다." 메세지가 뜨네요. 실행은 잘 되지만 계속 거슬려서, 해결할 수 있는 방법이 있을까요? ㅠㅠ
-
해결됨CUDA 프로그래밍 (6) - C/C++/GPU 병렬 컴퓨팅 - 서치 & 소트
예제를 돌려보고 싶은데 common.cpp은 어디에 있을까요?
알려주시면 감사하겠습니다!
-
미해결홍정모의 따라하며 배우는 C언어
마지막 custom input function 예제에서 버퍼비우기 코드의 역할이 궁금합니다
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #define STRLEN 81 char* custom_string_input(char* st, int n); int main() { char word[11]; puts(custom_string_input(word, 11)); return 0; } char* custom_string_input(char* st, int n) { char* ret_ptr; int i = 0; char ch; ret_ptr = fgets(st, n, stdin); if (ret_ptr) { while (st[i] != '\n' && st[i] != '\0') i++; if (st[i] == '\n') st[i] = '\0'; //else // while ((ch = getchar()) != '\n') // clear buffer // continue; } return ret_ptr; }1.위의 코드에서 버퍼 비우기 코드 else 부분을 주석 처리하고 실행해도, 버퍼에 남아있는 문자들이 결과에 영향을 주지 않는 것 같은데요(재실행해도 이전 버퍼에 영향을 받지 않는 것 같고요)버퍼 지우기 코드가 있어야 할 이유가 있나요? 안정성을 위한 부분일까요?2.버퍼를 디버거의 memory로 확인하는 방법이 있을까요? 버퍼에 대해 헷갈릴 때 직접 디버거로 찍어보고 싶은데, 방법을 모르겠어요 3.gets()함수에 대해 설명하실때,gets() reads one line and removes \n and add \0라고 하셨는데, 여기서 \n을 지운다는게 버퍼에서 지운다는 얘기일까요?
-
미해결홍정모의 따라하며 배우는 C언어
23:30 질문입니다
char heart[] = "I love Kelly!"; char* head = "I love Kelly!"; head = heart; //Ok heart = head; // Errorhead = heart; //Okheart = head; // Error선생님 전자는 되고, 후자는 안되는 이유가 뭐죠?생각보다 포인터와 배열의 차이를 알듯하면서도 계속 헷갈려서 스스로가 너무 답답해요ㅠㅠ
-
해결됨독하게 되새기는 C 프로그래밍
dll의 메모리 구조는 어떻게 되나요?
안녕하세요 수업 잘 듣고 있습니다. 양질의 수업 감사합니다.수업 내용중 dll에 관해 질문이 있습니다. lib형태의 라이브러리는 실행파일에 같이 묶이기 때문에 실행파일의 메모리구조(힙,스텍,데이터등)를 참조할 것이라 생각합니다. dll의 경우 하나의 라이브러리를 여러 프로세스에서 가져와서 사용하는 형태인데 이경우 각 프로세스 마다 dll을 위한 메모리가 할당되는것인지 아니면 dll을 위한 메모리 공간이 할당되고 그것을 공유해서 사용하게 되는것인지 궁금합니다. (혹 잘못 이해하고 있으면 지도 부탁드립니다.)
-
미해결C 프로그래밍 - 입문부터 게임 개발까지
함수 선언과 정의를 동시에 해도 되나요?
//함수 선언 void p(int num); int main(void) { int num = 2; p(num); return 0; } void p(int num) //함수 정의 { printf("num은 %d입니다.\n",num); } 이것이 책 본문에 나와 있는 내용입니다.함수 선언따로 정의 따로 되어있는데요.혹시 아래와 같이 선언과 정의를 동시에 해도 되나요?//함수 선언 및 정의 void p(int num) { printf("num은 %d입니다.\n",num); } int main(void) { int num = 2; p(num); return 0; }
-
미해결홍정모의 따라하며 배우는 C언어
[3.11] 4바이트 정수 범위에서 왜 유효숫자가 9개인지 모르겠습니다.
-2,147,483,648에서 -2 자리는 모든 숫자 (-3, -4) 이런 건 안 되니까 정밀도로 보장할 수 없고 나머지는 정밀도로 보장이 된다고 하셨는데 -2 자리는 왜 정밀도로 보장할 수 없다는 건지 뭐가 안 된다는 건지 이해가 되지 않습니다. 그리고 정밀도로 보장한다 안 한다의 개념이 무엇인지 좀 더 명확하게 알고 싶습니다. exponent를 저장할 때 음의 지수가 필요- unsigned 형태로 저장을 하고 127을 빼기 8bit 정수는 0 ~ 255까지인데 -127을 하면 -127 ~ 128 범위의 숫자를 표현할 수 있기 때문+) unsigned int 타입으로 저장을 할 때 모든 bit가 0이거나 1인 경우에는 다른 용도로 사용을 한다고 함 일반적으로 -126에서 128의 범위를 가짐 위 설명에서 이해 안 되는 점 1. 컴퓨터가 지수를 저장할 때 왜 음의 지수가 필요한지2. 다른 용도라는 게 무엇을 말하는 건지3. 앞에 음의 지수를 나타내는 방법 설명하실 때는 0~255 범위에서 -127을 하니까 -127~128 범위를 가진다고 하셨는데 왜 추가적으로 설명한 부분(모든 bit가 0이거나 1인 경우)에서는 -127~128이 아닌 -126~128의 범위를 가지는지답변 해주시면 감사하겠습니다.
-
해결됨홍정모의 따라하며 배우는 C언어
1.5 통합 개발 환경 소개 질문
안녕하세요. 1.5 강의를 듣던 중 링커에 대해 궁금한 것이 있어 글 올립니다. 강의에 따르면 컴파일이란 Visual studio같은 문서 편집기에 사용자가 작성한 소스 코드를 컴퓨터가 이해할 수 있도록 번역하는 역할을 한다고 말씀하셨습니다. 이 컴파일이라는 소프트웨어는 언어 자체에 존재하는 것인가요? 아니면 통합 개발 환경과 같은 문서 편집기에 존재하는 건가요? 컴파일이라는 소프트웨어는 링커라는 소프트웨어를 포함하고 있는 건가요? 아니면 둘은 따로 분리된 소프트웨어인가요? 늘 친절한 답변 감사합니다.
-
미해결홍정모의 따라하며 배우는 C언어
[3.0 고정 너비 정수] least의 의미가 궁금합니다
질문글을 살펴보니 int_least8_t는 char과 같다고 하던데 최소 8비트면 그 이상 범위의 큰 숫자가 와도 되는 것 아닌가요? 최소 @비트의 정확한 의미가 궁금합니다.
-
미해결홍정모의 따라하며 배우는 C언어
[3.9 고정 너비 정수] %d에서 d의 의미가 궁금합니다.
d32할 때 d가 decimal의 약자라고 하셨는데 decimal의 뜻은 소수, 십진법이라고 나옵니다. 여기서 decimal이 소수를 뜻하는 것이라면, int는 정수형 자료형인데 왜 형식 지정자는 정수가 아닌 소수를 뜻하는 decimal의 약자 d를 사용하는 것인가요? %d의 decimal이 십진법을 뜻하는 것이라면, 십진법은 0~9까지의 수이기 때문에 정수로 치고 이를 decimal = 정수 이렇게 정의 내려서 정수형 자료형의 형식 지정자로 %d를 쓰게 된 것인가요?