묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨독하게 시작하는 C 프로그래밍
strcat(szPath + 17, sizeof(szPath) -17....)에서
뒤에 17을 빼는 이유가 이해가 안갑니다
-
해결됨독하게 시작하는 C 프로그래밍
디버깅에서 메모리창에서
예를 들어 문자열처리 강의중 예제에서 pszToken을 찾을때, pszToken을 치는경우랑 &pszToken을 치는경우가 다른데 정확히 어떤차이가 있나요? &pszToken는 주소를 찾는거같긴한데 둘의 차이가 헷갈립니다
-
해결됨개발자를 위한 컴퓨터공학 1: 혼자 공부하는 컴퓨터구조 + 운영체제
운영체제와 프로그램에 관계
일반적인 프로그램이 하드웨어에 접근할 수 없기때문에운영체제를 통해서 접근이 가능하다고 말씀하셧는데 조금 햇갈려서 글남겨드립니다."응용 프로그램"이 운영체제라는 길을 통해서 하드웨어에 접근을 하는것인가요?아니면 응용 프로그램이 운영체제에게 부탁을하면 "운영체제"가 대신 하드웨어에 접근을 하는건가요?
-
해결됨독하게 시작하는 C 프로그래밍
배열 필수 실습문제
안녕하세요 강사님 다름이 아니라 필수 실습 문제를 풀다가 궁금한 점이 있어 질문드립니다. 다음 문제에서 저는 아래와 같이 코드를 작성했고 제 코드가 맞다고 생각했는데 #include <stdio.h>int main(void){ int nMin = 0; int aList[5] = {30, 40, 10, 50, 20}; for (int i = 0; i < 5; ++i) printf("%d ", aList[i]); putchar('\n'); for (int i = 0; i < 5; ++i) { if (aList[i] < aList[i + 1]) nMin = aList[i]; else nMin = aList[i + 1]; aList[i + 1] = aList[i]; aList[i] = nMin; } for (int i = 0; i <5; ++i) printf("%d\t", aList[i]); putchar('\n'); return 0;aList라는 변수가 Corrupted되었다는 메세지가 뜨는데 이게 무슨 말인지 알 수 있을까요? 감사합니다
-
해결됨독하게 시작하는 C 프로그래밍
break와 중첩 Loop 예제
안녕하세요 강사님 break와 중첩 Loop 예제 문제 관련해서 질문이 있습니다아래 코드에서 a를 입력하면 i:0, a이 출력되고 i=1이 그 밑에 다시 한번 출력되는데 이것은 키보드로 a를 입력하고 enter 키를 입력할때 enter키도 입력으로 받아들여서 카운트가 하나 올라가서 그런 것 인가요?강의 시간때 말씀하신 개행문자 때문이라는게 이 뜻일까요?
-
해결됨독하게 시작하는 C 프로그래밍
섹션 12[필수 실습 문제] '*' 출력 놀이 응용
안녕하세요 강사님 섹션 12 [필수 실습 문제] '*' 출력 놀이 응용 관련해서 질문이 있습니다 강사님께서는 if 문을 사용하셔서 문제를 해결하셨는데저는 for문만 사용했습니다수업시간에 강사님께서 말씀하신 puts("*")만 사용해서 연속으로 별을 찍는 것이 아니고 저만의 논리가 있으면 프로그래밍에서 방법은 상관없는 건가요? 특정한 정답이 있는건지 궁금합니다.
-
해결됨독하게 시작하는 C 프로그래밍
디버그로 인한 궁금증으로 질문드립니다.
안녕하세요 수업 잘 듣고 있습니다. c언어를 처음 배워서 모르는 것이 많아서 이상한 질문이라도 양해 부탁 드리겠습니다.c 부터 c++까지 4가지 강의를 쭉 들어보려고 구매를 했는데 열심히 해보겠습니다. 독하게 c 필수 실습 문제 2번째 것을 보며 디버그를 하다가 궁금증이 생겨서 질문 드립니다.제가 질문을 두서 없이 했습니다. 양해바랍니다ㅜ그리고 만일 질문의 내용이 수업을 따라가다 보면 알 수 있는 내용이라면 질문에 대한 답은 안 해주시고 그렇게만 써주시면 될 것 같습니다.첫 번째 char형 배열은 선생님 말씀처럼 잘 확인을 했는데두 번째 int형 변수는 저런 식으로 나와서 잘 모르겠습니다.메모리를 가리키는 주소 자체?도 메모리 인가요? 다만 위 사진에서는 주소 자체 메모리는 안보이고 그 주소가 가리키는 메모리만 보여줘서 주소 자체 메모리는 안 보일 뿐인가요?그렇게 되면 위 그림에서 0x00....43과 대응되는 ??은 못 쓰는 메모리가 되는 것인가요? 주소 자체?도 메모리라면 그곳에는 주소 뿐 아니라 정수도 저장할 수 있는 것 처럼 보이는데 맞나요? 주소 부분과 정수 부분이 구분 되어있는 건가요? 아니면 정수 부분도 주소로 쓰일 수 있는 건가요?위 사진에서 제가 67을 썼더니 주소가 0x00..43으로 나왔고 그것을 가리키는 메모리는 ??이 나왔습니다. 이것은 10진 수를 16진수로 바꾼 주소 자체에 그대로 매칭 시켜서 저장했다는 소리 같은데, 그러면 모든 정수는 이렇게 매칭 시켜서 중복되면 그 하나를 돌려 쓰게 되는 것인가요?뭔가 머리가 복잡해져서 그대로 질문을 했지만.... 말씀해주셔도 모를 것 같고 복잡할 것 같습니다.지금 단계에서는 그냥 넘어가고 뒤에 배우다 보면 다 알려주시는 부분인가요??아니면 따로 알아야 할까요??
-
해결됨독하게 시작하는 C 프로그래밍
강의에서 CON으로 콘솔을 여는게 참 신기한데요.CON의 경로는 어디일까요?
선생님께서 전강의에서 가르쳐주신 파일의 현재경로(프로젝트파일이 있는 폴더)로 con파일을 연거 같은데 그 폴더에는 con이 없네요 ㅠㅠ 요 파일은 별도로 관리되는 파일이라서 경로를 넣을 필요가 없는건가요?
-
해결됨독하게 시작하는 C 프로그래밍
섹션 12 반복문 필수 실습 문제 별 찍기
안녕하세요 강사님섹션 12 반복문 필수 실습 문제 별 찍기 관련해서 질문있습니다.변수 i=0; 초기화를 맨위나 while문 바로 위에 선언하면 실행이 잘되는데 변수 i=0; 초기화를 맨위나 while문 바로 위에 둘 다 선언하면 if 문까지만 실행이되고 그 아래 while문은 실행되지 않을까요? 그런데 또 맨위쪽과 while문 바로 위 모두 변수를 한번씩 선언하고 코드 실행 후 맨위나 while문 바로 위에 둘 다 선언했더니 정상적으로 작동이 됩니다 마지막으로 원래 return 0; 을 main함수 맨 밑에만 주로 썼는데 강사님께서 이 문제에서는 return 0;을 if 문 끝날때 쯤에도 한번 쓰셨는데 이유를 알 수 있을까요?솔직히 return 0;의 의미를 0의 값을 반환해서 최종적으로 함수를 실행되게 한다는 것 빼고 확실하게 모르겠습니다.
-
해결됨개발자를 위한 컴퓨터공학 1: 혼자 공부하는 컴퓨터구조 + 운영체제
부모 프로세스와 자식 프로세스
최초의 프로세스가 첫 번째 자식 프로세스를 생성하고, 첫 번째 자식 프로세스가 두 번째 자식 프로세스를 생성하면두 번째 자식 프로세스의 부모 프로세스는 무엇인가요?첫 번째 자식 프로세스 인가요 아니면 최초의 프로세스 인가요 아니면 둘다인가요?
-
해결됨개발자를 위한 컴퓨터공학 1: 혼자 공부하는 컴퓨터구조 + 운영체제
질문이 여러가지가 있습니다 ㅠㅠ
1.어셈블리코드의 경우에는 CPU의 명령어라고 하셨는데 그렇다면 CPU에 의존적인 상황인데 왜 컴파일러마다 어셈블리코드가 달라질수있는건가요? 2. 같은 컴파일러로 다른 어셈블리코드가 나온다는거는 운영체제가 해당 CPU에 맞는 어셈블리변환을 해주는거 같은데 맞을까요? 3.RISC의 경우에는 어차피 연산 코드부분의 크기가 같기 때문에 해당 부분의 비트만 해석하면되지만CISC의 경우에는 크기가 유동적이고 데이터도 바이트코드 연산코드도 같은 바이트 코드라면 CPU는 해당부분을 어떻게 구분하는지 궁금합니다 ! 4.명령어의 크기는 일반적으로 워드 크기와 같을까요? 5.메모리 주소 하나당 크기는 메모리에의해서 결정지어지는건가요? 아니면 CPU에 의해서 결정지어지는건가요? 6.ALU가 계산을 할때 레지스터가 피연산자를 제공해주고 ALU는 계산된값을 레지스터에 담는다해당 부분에서 제어장치의 제어신호없이 레지스터나 ALU가 각각 전달을 하는건가요? 아니면 모든 데이터 전달과정에는 반드시 제어장치의 제어신호가 포함된다고 보면될까요? 7. ALU계산결과가 레지스터값보다 큰경우엔 어떻게 되나요? 8.명령어 레지스터와 메모리버퍼 레지스터의 차이가 명확하게 이해가 가지않습니다 ..메모리 버퍼는 데이터 버스를 통해서 데이터를 받긴하지만 그대로 명령어 레지스터로 전달을 해준다면 메모리버퍼레지스터에서 바로 명령어를 전달해줘도 되는데 두개가 구분되서 존재한다는거는 명확한 이유가 있을꺼같은데 잘 모르겠습니다 9.직접 주소 지정방식의 경우에는 ex)기존 오퍼랜드에 1바이트데이터를 저장할수있던것을메모리 주소 참조를 통해 2바이트를 저장할수있기 때문에 데이터 크기가 커진다는게 이해가 갑니다.간접주소 지정방식의 경우에는 하지만 이런식으로 데이터 크기자체가 커지는게 아닌명령어 한개당 참조할수있는 주소가 많아지는거같은데 이게 맞을까요? 스택주소 지정방식에서의 스택은 프로세스 하나당의 스택 영역이 아닌 메모리에서 스택범위가 따로존재하는건가요? 그리고 검색해보니 해당부분이 커널영역이라고 하던데 맞을까요?그리고 현재 대부분의 컴퓨터에는 MMU를 활용한 베이스지정레지스터 방식과 스택 방식이 사용이 되나요?명령어 파이프라이닝에서 만약에 실행 단계 ALU계산단계에서 ALU가 한클럭에 끝낼수없는 복잡한 계산의 경우에는 인출 해석 여러번의 실행후 저장의 루틴인가요? 아니면 여러번의 인출 해석 실행 저장의 루틴 방식일까요? 그리고 만약 슈퍼스칼라를 사용하게되면 같은 클럭내에서 실행이 겹치기떄문에 ALU를 명령어 2개가 사용이 되는데 구조적위험이 반드시 생겨서 아예 못할꺼같은데 아주 조금의 시간차를 동시에 실행하는것처럼 파이프라이닝을 구성하나요?
-
해결됨독하게 시작하는 C 프로그래밍
gets_s 함수 형식문자
예제에서 name의 datatype을 char로 지정하셨는데 마지막에 printf문에서 출력할 때 형식 문자를 %c가 아니라 %s로 하시더라고요. 이 이유가 gets_s함수 때문인가요?? 만약에 맞다면 gets_s함수는 문자에서 문자열로 바꿔주는 역할을 하나요? 아니면 배열을 써서 바뀐 건가요..??
-
해결됨독하게 시작하는 C 프로그래밍
주소값을 저장하는 공간에 8Byte가 할당되는 이유
안녕하세요 선생님 질문이 있습니다. 포인터 변수에 할당되는 공간의 크기가 8Byte인것이 64bit 프로세서를 사용해서 그런것이라면32bit 프로세서에서는 포인터 변수에 할당되는 공간의 크기가 4Byte라고 이해해도 될까요?감사합니다.
-
해결됨독하게 시작하는 C 프로그래밍
예제 파일 다운로드 경로
안녕하세요 강사님. 항상 자세한 강의 감사드립니다! 예제파일을 다운로드 받을려고 하는데 혹시 어디서 받을 수 있을까요..? 찾아보았지만, 찾을 수가 없어 부득이하게 질의드립니다!
-
해결됨개발자를 위한 컴퓨터공학 1: 혼자 공부하는 컴퓨터구조 + 운영체제
메모리 쓰기 관련해서 질문있습니다.
메모리 쓰기를 할때에는 순서가 1.데이터 버스2.주소버스 3.제어버스 라고 되어있는데CPU에서 메모리로 데이터버스를 통한 데이터 전송이 주소버스를 통한 주소 전송보다 더 빨리되는데 메모리에는 해당주소가 확정되기전엔 어디에 있는건가요?
-
해결됨독하게 시작하는 C 프로그래밍
변수 이름 정보 자체의 저장 위치
안녕하세요 선생님 좋은 강의 만들어주셔서 감사합니다. 수강중에 질문이 있습니다. 예를들어 char ch = 'a'; 라고 했을때이름이 ch이고 크기가 1바이트인 변수가 OS에 의해 메모리에 할당되고 그 공간에 'a' 값 저장된다 그리고 &ch는 메모리의 주소 라는것 까지 이해했습니다.제가 궁금한것은 그렇다면 'ch' 라는 변수명(문자 자체)은 어디에 저장되며, 컴퓨터는 어떻게 'ch'라는 변수명을 인식할 수 있는지 궁금합니다.
-
해결됨개발자를 위한 컴퓨터공학 1: 혼자 공부하는 컴퓨터구조 + 운영체제
스택 영역과 힙 영역의 데이터 인출 순서
안녕하세요~!프로세스 개요 관련 질문에 대한 답변을 보다 궁금한 점이 있어 질문드립니다.아래 링크는 '메모리의 구조 (코드, 데이터, 힙, 스택 영역)' 에 대한 글인데 답변에 달려있었던 링크입니다.https://all-young.tistory.com/17힙과 스택에 대한 내용 중 데이터 인출 순서를 다음과 같이 정리가 되어 있었습니다.힙: 선입선출스택: 후입선출그런데 해당 글의 댓글을 보니 '힙영역은 사용자가 메모리를 직접 할당하고 해제할 수 있다는 점에서 이미 논리적으로 "순서가 정해졌다(FIFO)" 라는 말이 과연 성립할 수 있을까라는 의문이 생기기도 합니다.'고 되어 있다고 하고 영어로 검색하면 완전이중트리에 대한 설명이 나온다고 합니다.어떤 말이 맞는 건지 알 수 있을까요?
-
해결됨독하게 시작하는 C 프로그래밍
선생님 디스어셈블리를 활용해서 코드를 보다보니~~
선생님 디스어셈블리를 활용해서 코드를 보다보니 제 소스코드 위에서도 작업을 하는것 같고 아래쪽에서도 작업이 이루어 지더라구요 위쪽에서는 add byte ptr [rax],al 아래쪽에서는 뭐가 쫌 일어나다가 00007FF7A71E1001 int 3 요런 명령이 나오더라구요~~ 요게 보니까 제소스코드 위아래로 c컴파일러?가 다른 작업을 하고 있는건가요?? 잘 몰라서 질문을 제대로 한건지도 모르겠네요 ㅠㅠ
-
해결됨독하게 시작하는 C 프로그래밍
32비트 시스템에서의 메모리 관리
안녕하세요. 32비트 시스템은 1바이트 메모리에 부여하는 주소가 32비트 상수라는 얘기가 이해가 안 가서 질문 드립니다.1바이트 하나 자체를 32비트의 주소로 관리한다는 것인지전체 메모리(ex. 4GB)에서 1바이트를 기준으로 32비트의 주소를 부여한다는 것인지 이 2개 중에 어떤 걸 의미하는지 헷갈립니다.알려주시면 감사하겠습니다. 항상 좋은 강의 감사드립니다.
-
해결됨독하게 시작하는 C 프로그래밍
C언어와 파이썬
안녕하세요 선생님다름이 아니라 현재는 프로그래밍 분야와 다른 분야에서 일하고 있지만 차차 준비를 해서 언젠가는 해당 분야로 직무를 변경하여 일하고 싶어 선생님의 강의를 수강하고 있는 직장인입니다.제가 처음 C언어를 배운 것은 2015년도 였고 그때 포인터를 마주하고 C언어 및 프로그래밍의 벽을 느껴 공부를 포기했었습니다. 그 이후로도 몇번이고 공부하고자 마음을 먹었지만 코드를 따라치고 기본적인 문법을 익혀 예제를 푸는 것 만으로는 실질적으로 코드 자체가 이해가 가지 않아서 중간에 학습을 포기하였습니다.최근에는 선생님의 C언어 강의를 들으면서 차근차근 공부를 하고 있습니다. 강의 내용이 어렵긴하지만 그래도 기초적인 것부터 설명해주셔서 너무 감사하게 수강 중입니다. 선생님이 말씀하신대로 프로그래밍언어 공부는 단순히 문법을 익히는 것 뿐만아니라 컴퓨터 구조와 메모리를 어떻게 쓰는 지 아는 것이 중요하고 이런 학습 방법이 도움이 더 많이 되는 것 같습니다. 아직도 잘은 모르지만 뭔가 하나하나 개념이 잡힌다고나 할까요? 그런데 최근 고민이 있습니다. 제 지인들은 다들 4년제 컴퓨터공학과를 나와서 일을 하고 있습니다. 제가 지인들에게 학습 방법, 로드맵에 대해서 질문을 하면 다들 C언어를 공부하는 것 보다는 Python을 공부하는 것이 더 좋다고 합니다. 실질적으로 c언어를 써서 개발하는 부서는 많지도 있고 요샌 대부분 Python을 사용하여 업무를 한다고 하더라구요. 제가 미리 말씀을 안드렸는데 현재 저는 반도체 기업에서 일을 하고 있고 제 지인들도 반도체 기업의 SW직무이고 저 또한 프로그래밍 능력을 쌓아 C++로 코딩테스크를 본 뒤에 사내 직무 이동 프로그램을 통해 SW직군으로 이동할 계획입니다.또한 지인들이 Python 은 인터프리터 언어(메모리 관리를 안해도 되는 언어)라서 요새는 C++까지 넘어가지 않아도 된다고들 하더라구요. 그래서 C는 어려우니 굳이 힘빼지말라는 말도 들었습니다. 또한 현업에서 일하시는 분들도 운영체제, 자료구조,네트워크 같은 과목을 두루두루 깊게 공부한 사람들이 적다고도 들었습니다.저는 현재 C언어를 공부하면서 어렵지만 배우는 것도 많고 뭔가 뜬구름 잡던게 하나하나 알아가는 느낌이라서 좋은데 제 지인들이 코딩테스트도 Python으로 봐라 C는 어렵고 어차피 현업가면 Python을 쓴다고 해서 제가 올바른 방향으로 학습을 하고 있는것인지 의문이듭니다. 제가 코딩 테스트를 C++로 보려는 이유는 인터프리터 언어인 Python보다 컴파일러 언어인 C++을 공부해야지(C++이 조금 더 어렵긴하지만) 컴퓨터가 메모리를 어떻게 쓰는 지 알게 되고 나추후에 더 도움이 된다고 생각해서 C++로 준비하고 있는데 제가 삽질을 하고 있는 건 아닌지 선생님의 의견이 궁금합니다.또한 제가 만약 C언어를 공부후에 선생님께서 자료구조, 운영체제, 네트워크는 필수로 공부하라고 들었던 것 같은데 맞을까요? 그렇다면 자료구조, 운영체제, 네트워크 중 공부 순서가 있을까요?위의 3가지 과목 이외에 추가적으로 공부해야할 과목과 공부순서가 있을까요? 이론공부의 커리큘럼이 공부합니다.그리고 현재 선생님의 유튜브 채널 멤버쉽도 구독 중인데 시간되시면 이 내용에 대한 선생님의 생각을 한번 유튜브에서 말씀해주시면 저처럼 갈피를 못잡고 있는 사람들에게 많은 도움이 될 것 같습니다. (저에 대한 직접적인 언급은 뺴고요) 감사합니다