묻고 답해요
156만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨홍정모의 따라하며 배우는 C언어
메모리의 '첫 번째 주소' 및 byte 단위 메모리 공간의 저장 순서에 대한 질문
'9.17 포인터 변수의 크기' 강의를 보고, 의문이 생겨 질문 드립니다. 예를 들어, 다음과 같은 코드가 있습니다. int a = 4; float b = 4.0f; double c = 5.0; int *ptr_a = &a; float *ptr_b = &b; double *ptr_c = &c; Q1. 포인터 변수(ptr_a)가 변수(a)에 대하여 저장하는 첫 번째 주소란, 그 변수(a)가 memory에 저장될 때, 가장 마지막에 저장되는 1 byte 메모리 공간의 주소를 의미하는 것이 맞나요? Stack memory에 data가 저장될 때에는 High address로부터 Low address방향으로 저장된다고 알고 있습니다. 포인터는, 변수가 접근하는 메모리 공간의 첫 번째 주소를 저장하는데, 여기서 Memory를 살펴본 바, 첫 번째 주소란, 변수(a)가 stack에 저장될 때, 마지막으로 저장된 1 byte 메모리 공간으로 이해됩니다. 그리고가장 먼저 저장된 변수인 a의 주소는 b, c보다 높은 주소에 위치하고,b의 주소는 c보다 높은 주소에 있습니다. 그렇다면, 변수(a)의 4 byte짜리 메모리 공간들에 대해서도 저장될 때, 가장 먼저 저장되는 메모리 공간은 나머지에 비해 높은 주소에 위치한다고 추론할 수 있습니다. 그러므로 포인터가 저장하고 있는 주소값, 즉 그 변수(a)의 첫 번째 주소란, 가장 마지막에 저장되는 1 byte 크기의 메모리 공간이라고 이해하고 있습니다. Q2. x64에서 debugging을 실행할 때, 가장 나중에 저장되는 변수가 가장 높은 주소를 가지고 있는데, 왜 그렇습니까? x86으로 실행했을 때와 마찬가지로, stack에 쌓이는 메모리 공간들의 주소는 from high to low이어야 한다고 알고 있습니다. x64로 디버깅을 해보니, 먼저 저장되는 변수 자체의 메모리 공간이 저장되는 순서는 high to low 순으로 주소를 가지지만, 각 변수의 첫 번째 주소를 참고해보면, 이상한 점이 있습니다. 가장 마지막에 저장된 변수 c가 가장 높은 주소값을 가지고 있다는 것입니다. stack에 저장되는 메모리들의 주소는 가장 높은 메모리 주소부터 낮은 메모리 주소의 방향으로 저장되는데, 여기서는 x86 환경에서 memory 확인했을 때와 달리 정반대입니다. 왜 그럴까요?
-
미해결C로 배우는 자료구조 및 여러가지 예제 실습
학습 자료 pdf 파일에 관해서
안녕하세요. 얼마 전 부터 수강하게된 학생입니다. 다름이 아니라, 학습 자료가 올라와있는 링크가 있었는데 최근들어 접속이 안돼서 자료를 받지 못하고 있습니다. 혹시 자료를 받을 수 있는 다른 곳은 없을까요?
-
미해결홍정모의 따라하며 배우는 C언어
/ 이거 말고 왼쪽위에서 아래로 내려오는 모양 어딨어요?
키보드에서 안보인뒝 `이거 닯았는데 좀 길게 생김;;
-
미해결홍정모의 따라하며 배우는 C언어
2차원 배열과 포인터 개념 질문이 있습니다.
float arr2d[2][4] = { {1.0f,2.0f,3.0f,4.0f},{5.0f,6.0f,7.0f,8.0f} }; float(*pa)[4]; float* ap[2]; pa = arr2d; 강의에서 코드가 이렇게 나오는데 여기서 개념이 헷갈리는게 있습니다. 1. float형 포인터변수 pa는 '원소가 4개짜리인, 이름도 모르는 어떤 배열을 가리키는 포인터 변수' 라고 생각했는데 이게 맞는지(맞다면 이 배열은 초기화를 안해줬으니까 쓰레기값이 들어가있는 건가요?) 2. pa에 arr2d배열의 첫 원소를 가리키는 주소를 넣어줬는데, 그럼 pa가 처음에는 쓰레기 값이 들어있는 배열을 가리켰다가 arr2d의 첫 번째 row(배열)를 가리키게 되는 건지(pa가 정확하게 뭘 가르키는지 조금 헷갈립니다.) 이렇게 질문이 있습니다. 도와주심 감사하겠습니다.
-
해결됨홍정모의 따라하며 배우는 C언어
5.4 코드 질문 있습니다!
강의 시간에 다룬 내용인 복리 문제입니다.이해가 가지 않는 부분이 있어서 댓글 남깁니다. 아시는 분이 계신다면 답변 부탁드립니다. 위 사진은 강사님께서 하신 방법 그대로를 따라서 작성한 코드이고 이 사진은 제 궁금증입니다."fund에 seed_money를 넣고 반복문에 fund를 사용 할 거라면 그냥 처음부터 fund 선언을 하지 않고 바로 seed_money를 사용하면 안 되나?" 가 제 의문입니다. 제 방식 대로 했더니 올바른 답도 나와서요. 강사님께서는 보는 사람이 코드를 더 정확하게 이해할 수 있게 만들기 위해 fund 변수를 넣으셔서 짠건가요?
-
미해결홍정모의 따라하며 배우는 C언어
공용체 Designated initializer 질문이 있습니다.
#include <bits/stdc++.h> using namespace std; /* Union - Store differnt data types in the same memory space - Structure vs Union */ /* 유니온은 유니온 안에 다른 데이터형들이 여러개 있어도 메모리공간을 같이 공유해서 사용한다. 그래서 밑의 my_union은 8바이트가 잡히게된다. */ union my_union { int i; double d; char c; }; int main() { union my_union uni; cout << sizeof(uni) << endl; cout << (long long)&uni << endl; //모두 맴버의 같은 주소가 나온다 -> 주소를 공유한다.!! cout << (long long)&uni.i << " " << (long long)&uni.d << " " << (long long)&uni.c << endl; //결과는 A에 대해서 나온다! uni.i = 5; uni.c = 'A'; union my_union uni2 = uni; union my_union uni3 = { 10 }; // First member only union my_union uni3 = { .c = 'A' }; return 0; } ================= 현재 소스에서 union my_union uni3 = { .c = 'A' }; 를하니 오류가 뜨는데 왜 이런거죠?
-
해결됨홍정모의 따라하며 배우는 C언어
print f 함수가 있는 lib파일을 선생님을 따라 찾는데 못 찾겠어요
비쥬얼 스튜디오를 설치한 곳이 선생님과 다른지, 내pc Program Files(x86) microsoft 까진 찾았는데 그 후로는 영상과 같이 Microsoft Visual Studio 11.0 , 12.0, 14.0 이런 건 보이지 않네요... 어디 있을까요? 그리고 'msvcrtd' 에 뜻이 있나요?
-
해결됨홍정모의 따라하며 배우는 C언어
signed char의 쓸모
char 형태는 결국 ASCII값을 통해서 처리되는데 1 bit를 sign을 위해 남겨두는게 잘 이해가 안되더라고요error처리를 위한건가 싶지만 구글링 했을때 아직 명확한 답을 찾지 못하여 질문드립니다. - char에서 음수가 필요 없어 보이는데 signed 형태가 있는 이유는 무엇일까요?
-
해결됨홍정모의 따라하며 배우는 C언어
VS Code에서 go to definition하면, VS의 헤더파일 코드가 나타납니다.
강의 3.14 복소수형. 1분 53초부터 시작되는 complex.h파일 definition에 관한 질문입니다. VS Code로 complex.h 파일의 정의 부분으로 이동했는데요. 어찌된 일인지, Visual Studio의 complex.h파일 내용이 보입니다. 분명 여태까지 gcc 컴파일 잘 됐고 강의에서 VS Code 관련 내용 모두 다 잘 따라왔는데요. 이번에 complex 헤더파일 정의로 이동해보니 mingw에서 include되는 헤더파일이 아니었습니다. 이런 경우 어떻게 해야 mingw 내부의 헤더파일을 include할 수 있을까요?
-
해결됨홍정모의 따라하며 배우는 C언어
[Visual Studio 2022] 디버깅시, Autos창에서 왜 변수명/값이 Local창과 다르게 보이나요?
디버그 모드, x86으로 디버깅을 하는데 VS2019에서는 안 생기던 현상이 보여 질문드립니다. 문제 상황 : 디버깅할 때, Autos창에서 name, value가 locals창의 그것들과 다르게 보이며, 심지어 변수가 사라지기도 하는 현상 라인 8번까지 실행된 후, Autos창을 보면, 이전까지 있었던 변수 y나 z 둘 중 하나가 사라지고, name과 value도 1이됩니다. 또한, 변수명이 갑자기 x의 값으로 바뀝니다. 예를 들어, x = 5 라고 하면, 이 단계에서 Name 부분에 5로 나옵니다. 그러나 locals 창에서는 위와 같이 문제 없이 나옵니다. 이후 Step Into해서 넘어가면, Autos 창에서 x의 변수명과 값이 z의 value로 대체됩니다. 역시 locals창을 확인해보면, 정상적으로 짚어내고 있습니다. VS 2019로 똑같은 조건에서 디버깅해보면, Autos창에서 문제 없이 잘 짚어냅니다. 어떤 것을 참고하면, 왜 이런 현상이 나타나는지 알 수 있을까요?
-
해결됨홍정모의 따라하며 배우는 C언어
exit()함수
안녕하세요. exit()함수가 <stdlib.h>에 선언되어 있다고 하셨는데 <stdio.h>만 있어도 exit()함수가 작동이 됩니다. 비주얼 스튜디오 2022 Preview 사용 중인데 IDE 버전의 차이 때문인가요?
-
해결됨문제로 배우는 C언어
저는 이렇게 풀어봤습니다.
#include <stdio.h> int main{ int n = 0; scanf("%d", &n); n = (n + 11) / 12; printf("%d", n); return 0; } 초보자 이지만 다른분들이 참고하기를 바라며 남겨봅니다. 선생님 좋은강의 찍어주셔서 감사합니다 열공하겠습니다.
-
해결됨홍정모의 따라하며 배우는 C언어
10:13 호출되는 함수 변수의 메모리할당 시점 질문입니다
10:13 호출되는 함수 변수의 메모리할당 시점 질문입니다 void func() { int l_arr[MAX] = { 0, }; } int l_arr[MAX] 가 컴파일 할때 할당되는건가요?문득 전에 main 이외에 함수들을 정의는 안한채로 선언만할수 있고그렇게하면 컴파일러에서는 에러는 안내지만 링킹할때 문제 생긴다고 하셨던게 떠 올라서이미 정의까지 되어있는 함수에 대해서는 메모리에 할당되는 시점이 컴파일 할때라고 이해하면 괜찮을까요?
-
미해결홍정모의 따라하며 배우는 C언어
명령 프롬포트에 관해 질문이 있습니다(강의 8.3)
강의 8.3을 보면서 따라해보다가 잘 안되는 부분이 있습니다. 명령프롬포트에서 실행파일을 실행하기 위해 그 파일이 존재하는 directory로 가서, Lecture 8.3.exe 이렇게 실행시켜봤더니 (교수님 하신대로 따라해보았습니다) 다음과 같이 실행이 안됩니다. 그 이유가 궁금합니다.. 혹시 파일 경로 중에 한글이 있어서 그런건가요?
-
미해결
C언어 관련질문입니다.
int main(void) { int age; double height; char grade; printf("Input your grade : \n"); scanf("%c", &grade); printf("Your grade is %c\n", grade); printf("Input age and height\n"); scanf("%d%lf", &age, &height); printf("age is %d height is %.1lfcm\n", age, height); } 이렇게 코딩을 하면 출력이 Input your grade : A Your grade is A Input age and height 20 180 age is 20 height is 180.0cm 이렇게 나오는데 int main(void) { int age; double height; char grade; printf("Input age and height\n"); scanf("%d%lf", &age, &height); printf("age is %d height is %.1lfcm\n", age, height); printf("Input your grade : \n"); scanf("%c", &grade); printf("Your grade is %c\n", grade); } 이렇게 하면 출력값이 Input age and height 20 180 age is 20 height is 180.0cm Input your grade : Your grade is 이렇게 나옵니다. 순서에 따라 왜 이런가요?
-
미해결C 프로그래밍 - 입문부터 게임 개발까지
터미널에서 아무 반응이 없습니다.
터미널에서 아무 반응이 없습니다. 컨트롤 f5를 누른후의 상태입니다. 사용버전은 Visual Studio Code 사용중에 있습니다. 프로젝트로는 안만들어지고 일반새파일로해서 c언어로 파일만들어서 사용중인데 맞게사용중인지도 궁금합니다. 터미널은 아래의 사진처럼 뜨면서 출력으로 실행했을땐 출력이 제대로 나오긴합니다.
-
미해결홍정모의 따라하며 배우는 C언어
define 과 변수 의 차이
기호적 상수와 전처리기 파트에서 PI를 define 하는데 float PI = 3.141592; 와 차이가 무엇인가요?
-
해결됨홍정모의 따라하며 배우는 C언어
3:20 getchar()
왜 갑자기 getchar() 이 나오는 건지 모르겠어요. getchar가 아니라 scanf로 입력받았던 건데 왜 갑자기 getchar가 나오나요?
-
미해결C 프로그래밍 - 입문부터 게임 개발까지
마지막 문자열 "나도코딩"에서 13byte로 출력됩니다.
한글은 2byte이니까 "나노코딩"은 2* 4 + 1 byte == 9가 되어야 하는데, 13바이트로 나오는 이유를 알 수 있을까요? 런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
미해결홍정모의 따라하며 배우는 C언어
3.13 불리언형
#include <stdio.h> #include<stdbool.h> int main() { printf("%u\n", sizeof(_Bool)); // 1 byte _Bool b1; // Bool type 은 true 나 false -> 2가지만 가질 수 있음 b1 = 0; // false b1 = 1; // true // -> 정수형이기 때문에 false : 0, true : 1 printf("%d\n", b1); bool b2, b3; b2 = true; b3 = false; printf("%d %d\n", b2, b3); return 0; } 이렇게 코드 작성했는데 계속 식별자 "_Bool " 이 정의되어 있지 않다는 오류 메시지가 뜹니다 ㅠㅠ 영상에선 오류없이 잘 작동이 되던데 혹시 뭐가 문제인지 알 수 있을까요?