묻고 답해요
156만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨독하게 되새기는 C 프로그래밍
문자열 관련 질문 드립니다
우선 예제 코드를 먼저 보여드리겠습니다. char arr[13] = "Hello World\n";char* arrr = "Hello World\n"; printf("%p\n", &("Hello World\n"));printf("%p\n", arrr);printf("%p\n", arr); "Hello World\n" 과 arrr이라는 포인터 변수의 대상이 완전히 일치한다는 것은 이해했습니다.그래서 4행과 5행의 출력 결과는 같다는 것을 실습으로 확인했습니다.그런데 6행의 출력 결과는 앞의 두 경우와 다르게 나왔습니다. 질문은 총 4가지입니다. 포인터 변수를 통해 직접 메모리 주소를 가져오는 것과배열을 통해 지역변수를 선언하여 문자 배열의 정보를 담는 것은 전혀 다른 것인가요?그렇다면 1행의 정보는 stack 영역에 저장되는 것인가요?배열도 상수화된 포인터이기에 1행과 2행이 같은 메모리 주소를 가리켜야 되는 것이 아닌가요?2행에서 선언된 포인터 변수의 경우 배열 연산자로 접근하여 쓰기를 시도할 경우 엑세스 위반의 예외를 알려주는데 읽고 쓰는 권한 때문에 다른 메모리 주소를 가리키게 되는 것인가요?
-
미해결홍정모의 따라하며 배우는 C언어
free의 의미?
안녕하세요19분 30초 쯤에 동적할당으로 할당받은 메모리를 free를 통해 반납하는 내용인데요 printf("Before free %p\n", ptr); free(ptr); // no action occurs when ptr is NULL printf("After free %p\n", ptr);위 코드를 실행했을 때 free하기 전 동적할당받은 메모리를 가리키는 포인터 주소와free한 후의 포인터 주소는 여전히 같음이 나옵니다. 그렇다면 free로 해제를 해도 전에 할당받았던 메모리에 대한 주소를 포인터ptr이 여전히 가지고 있다는 것인데이렇게 된다면 free가 무색하게 계속 그 메모리에 접근 할 수 있는 거 아닌가요? 물론 free를 함으로써 그 메모리에 대해 할당하고 회수할 컨트롤 권한? 은 os가 다시 가져간다는 것은 이해했지만약간 명시적인 측면도 있는 건지 궁금합니다.
-
미해결홍정모의 따라하며 배우는 C언어
Printf 함수와 putchar 함수 관련 질문입니다.
강의를 듣다가 아래 사진은 제가 직접 짠 코드고 위의 사진은 교수님이 보여주신 정답코드인데 printf함수를 putchar 함수로 바꾸니 원하는 결과가 나왔습니다. Printf함수로는 왜 안되는건가요??
-
해결됨CUDA 프로그래밍 (1) - C/C++/GPU 병렬 컴퓨팅 - CUDA 커널 kernel
hello-prrallel.cu 의 병렬처리에 관하여
좋은 강의 고맙습니다.병렬처리라면 일반적으로 다른 쓰레드에 영향을 주지 않고 수행이 될거라 생각이 됩니다.예제 코드에서 hello<<<1,8>>>();을 이용하여 쓰레드 8개를 병렬로 돌리는데 출력된 값은hello CUDA 0!hello CUDA 1!hello CUDA 2!,,,hello CUDA 7!이 되는 것을 볼 수 있는데 병렬로 처리된다면 출력 되는 숫자가 순차적으로 나올 수 없는 것 아닌가요?
-
해결됨독하게 C를 배운 사람을 위한 선형 자료구조
이중 연결 리스트 AddNewNode 함수 질문
안녕하세요! 항상 좋은 강의 만들어주셔서 감사합니다! 강의 완강 후 복습하며 자료구조 구현 중에 질문이 있습니다. 이중 연결 리스트 구현 중 새로운 노드를 추가한 뒤, 앞뒤 노드의 pPrev와 pNext를 바꿔주는 과정에서 처음에는 pPrevNode를 새로 정의하지 않고 주석 처리한 부분으로 앞 노드와 관계를 정리했는데, 이렇게 하니 이전 노드의 pNext의 값이 pNewNode의 주소로 제대로 바뀌지 않는 것 같았습니다. 혹시 이렇게 되는 이유가 궁금합니다
-
해결됨독하게 시작하는 C 프로그래밍
예제 다운 후 한글 깨짐
안녕하세요, Visual Studio 2022 Community 버젼을 사용하고 있는데 다운 후 파일들을 보니깐 파일이 깨져 있는데 혹시 해결법이 있을까요?
-
해결됨독하게 시작하는 C 프로그래밍
PDF관련 질문
PDF 파일 다운받기 위해 유튜브 멤버십 가입 후 다운로드를 마쳤습니다 강의 제목중 강의자료 PDF 포함 그리고 인쇄용 흑백자료 포함 예제파일 포함이라고 나와있는건 교재용 PDF파일과 예제용 PDF 파일을 참고하며 수업진행해야한다는 뜻일까요?
-
해결됨독하게 C를 배운 사람을 위한 선형 자료구조
pTmp 변수를 사용하는 이유
노드를 추가하는 함수나 해제하는 함수에서 헤드노드를 pTmp변수에 대입한 후에 pTmp값을 가지고 코드를 짜는 게 이유가 있나요? 그냥 pTmp를 사용하지 않고 바로 헤드노드를 사용해도 괜찮지 않나요?
-
해결됨독하게 시작하는 C 프로그래밍
교재 chapter 11장 5번 연습문제 관련 질문
안녕하십니까? 강사님교재 chapter 11장 5번 연습문제를 풀기 위해 coding을 했습니다. 프로그램은 작동 하는데 첨부 화면캡처 사진 14번행에 밑줄이 생겼는데 읽어봐도 무슨 말인지 알수가 없습니다.설명을 부탁드려도 될까요?혹시 저 밑줄을 없앨 수 있는 방법이 있을까요?수고하십시오
-
미해결C 프로그래밍 - 입문부터 게임 개발까지
10-2
파일 쓰기 중에 계속 파일 열기 실패라고 뜨는데 혹시 파일을 만들어야하는건가요?
-
해결됨독하게 되새기는 C 프로그래밍
라이브러리
정적 라이브러리 보다는 동적 라이브러리의 장점이 많은 것 같은데, 정적 라이브러리도 많이 사용되나요?정적 라이브러리가 가지는 장점은 무엇이 있는지 궁금합니다.
-
해결됨독하게 되새기는 C 프로그래밍
부동소수점
float 형을 예로 들면,표현 범위가 1.17*10^(-38) 부터라고 되어있는데, 유효 숫자는 소수점 이하 6자리인 이유는 무엇인가요?
-
미해결홍정모의 따라하며 배우는 C언어
다른 파일 include 관련 질문
안녕하세요. 9.11 강의 17:01에서 강사님께서"현재 상태에서 main.c 함수는 my_print_functions.c 파일에 대해서 알지 못해요"라고 설명해주시는데요.이때 알지 못한다는 것을 compile 단계에서 알지 못한다고 이해해도 괜찮은가요?즉, compile단계에서는 main.c 함수가 my_print_functions.c 파일을 알지 못하지만,linking 단계에서는 linker가 두 파일을 연결해줘서 build가 정상적으로 이루어진다고 이해하면 될까요? 아래 사진처럼 my_print_functions.h 파일을 무시하고 main.c에서 my_print_functions.c 파일을 바로 include해보았는데 에러가 나옵니다. 어떤 부분에서 잘못된 것인가요?
-
해결됨홍정모의 따라하며 배우는 C언어
버퍼 관련 질문
int number;printf("Please Enter a positive number\n");while (scanf("%d", &number) != 1){printf("Please try again\n");while (getchar() != '\n')continue;}이 예제에서while (getchar() != '\n)continue;가 없으면 어떤 알파벳 하나를 입력 했을 때Please try again이 무한으로 출력이 되는데 그 이유가 뭔가요?어떤 알파벳 하나를 입력하고 엔터를 누르면 알파벳 하나는 scanf로 들어가고 \n은 버퍼에 남는 것이 맞죠?그리고 나서는 Please try again을 한번 출력하고다시 scanf로 가서 버퍼에 남았던 \n이 입력으로 들어가서버퍼는 비워지고 (scanf("%d", &number) != 1) 이라는 조건을 만족해 Please try again이 출력되고다시 처음으로 돌아가 scanf 입력을 받기위해 대기해야하는 것 아닌가요?왜 자꾸 please try again이 무한 출력되는지 모르겠어요 도와주세요
-
해결됨[쥬신게임아카데미 버거쌤] 완전 초보자를 위한 게임 C++
32:51초 질문입니다.
int* pInt = new int[2] (1, 2); 가 아니라int* pInt = new int[2] {1, 2} 아닌가요?? 괄호 -> 중괄호 영상이랑 똑같이하면 새 이니셜라이즈 어쩌구 오류가 발생해서요
-
해결됨독하게 시작하는 C 프로그래밍
변수들이 stack frame에 할당되는 구조에 대하여
우선 강의 내용 정말 만족하면서 잘 듣고 있습니다.섹션 16의 "가변 길이 입력에 대한 stack frame 손상" 강의편에서Callee로 GetString 함수를 활용하여 디버깅 모드로 메모리 주소를추적하는 과정에서 질문드려요.스택 구조는 높은 메모리 주소에서 낮은 메모리 주소 방향으로할당 받는 구조로 알고 있는데, char 배열이 int형 변수보다낮은 메모리 주소에 할당이 되어서 질문 드립니다.제가 따로 여러 변수들을 적용하여 디버깅 해보았는데도 마찬가지더라고요.혹시, os에 따라 변수가 할당되는 스택 메모리의 순서가 다른건지 궁금해서 질문드려요.
-
해결됨독하게 시작하는 C 프로그래밍
C가 아예 처음인 학생입니다. 샘플 만드는 방법이 알고싶습니다
시작하자마자 나오는 09_getcharSample을 직접 작성해보려하는데, 선생님 화면과 동일하게 파일을 만드는 방법을 모르겠습니다.아예 처음인 사람은 사실 이렇게 시작하는방법부터 학습이 필요한데.. 어떻게 실행하면 될까요?상단에 파일 - 새로만들기 - 프로젝트 - 빈 프로젝트 - 프로젝트이름 : 09_getcharSample 까지 하고 만들기 눌렀는데 코드를 입력하는곳이 안뜨네요
-
미해결정혜경 판타스틱 자료구조 in C
txt파일이 12강 수업자료에 없습니다!
실습에 사용할 텍스트 파일이 12강에 올라온 자료에 없는 것 같습니다!
-
해결됨홍정모의 따라하며 배우는 C언어
10분 8초경 질문
예제를 실행시켜보면 10분 8초경처럼엔터를 누르면 줄바꿈이 되는게 아니라 커서가 맨 처음으로 돌아가는데이거 왜 이러는 건가요?구글링 해보니까 윈도우에서는 엔터키 입력이 /r/n(캐리지 리턴 및 줄바꿈)이라고 하는데그러면 /r/n이 실행되어서 줄바꿈이되고 커서가 줄바꿈된 줄의 맨 처음으로 돌아가야 하는데왜 /r만 실행이 되는 건가요? 밑의 질문중에 교수님이 답변해주신거에 스택오버플로우 링크가 있던데그건 제가 영어를 못해서 이해를 못하겠더라구요
-
미해결홍정모의 따라하며 배우는 C언어
함수 내 static 변수
안녕하세요코드를 보시면void static_count() { static int ct = 0; printf("static count = %d\n", ct); ct++; }정적변수가 만들어져있는데요,(23:23 부분)이후 main 함수에서static_count(); static_count();를 실행하는데요,프로그램에 박힌 정적변수 ct는 처음에 0이였고 static_count()에 의해 0이 출력되고 값이 1 증가합니다.이후 또 static_count()가 실행돼도 1이라는 값은 보존되어 1로 출력됩니다.그런데 여기서 두 번째 static_count()가 실행될때 마찬가지로void static_count() { static int ct = 0; printf("static count = %d\n", ct); ct++; }를 실행시키는데 이미 정적변수 int ct가 메모리에 살아남아 있을 때해당 코드에서 static int ct = 0코드는 무시가 되는 원리인가요?감사합니다.