게시글
질문&답변
2021.12.25
포인터
안녕하세요 int *ptr_x = &x; int *px = &x; 위 두식은 포인터명이 ptr_x , px 로 다르다는 것 정도 외에는 같은 뜻으로 볼 수 있습니다. (x 의 주소를 저장하는 int 포인터) 실행을 새롭게 할 때마다 주소가 원래 바뀝니다! 메모리 관리는 운영체제가 하며 x 의 주소값이 무엇일지는 실행할 때마다 다릅니다.
- 0
- 3
- 361
질문&답변
2021.12.25
4.4 strlen 강의 질문드립니다.
안녕하세요! x86 환경에서는 포인터 크기가 4 이지만 x64 환경에서는 포인터 크기가 8입니다. (사진) x64 환경에서 실행하셨는지 확인 부탁드릴게요! 지극히 정상인 현상이며 굳이 x86 으로 바꾸실 필요는 없습니다.
- 0
- 1
- 244
질문&답변
2021.12.25
[Visual Studio 2022] 디버깅시, Autos창에서 왜 변수명/값이 Local창과 다르게 보이나요?
안녕하세요 저는 vs2022 를 사용하지 않아 해당 현상에 대해 설명 드리는데 어려움이 있네요 ㅠㅠ 설명 주신 본문 읽어보면 vs 2022 의 버그같아 보입니다. https://www.reddit.com/r/VisualStudio/comments/qpzqek/vs2022_bugs_am_finding_vs2022_to_have_bugs_all/ 레딧 글이긴한데.. 2019 보다 2022 이 안정적이지 않고 버그가 있다는 글이 있네요
- 0
- 1
- 1.1K
질문&답변
2021.12.16
head guard가 있는데도 cpp 파일에서 body가 정의되면 에러가 뜨는 이유
cpp 파일에서도 헤더가드 사용할 수 있기 때문에 작동하지 않는다는 가정이 맞...을 것 같지는 않는데 흠 어렵네요 ㅠㅠ 구글링 해보니 cpp 파일에서 헤더가드가 무용지물 된다는 이야기는 찾지 못했습니다. 흠 저도 이해가 잘 되지 않네요... 시원한 답변 드리지 못해 죄송합니다.
- 0
- 2
- 363
질문&답변
2021.12.16
대입연산자와 생성자 질문
initializer_list 인 { 6 ,8, 10 } 을 가지고 IntArray 객체를 만든 후 (즉, 저 생성자 실행) int_array 에 대입했다고 생각해주시면 될 것 같아요 !
- 0
- 1
- 214
질문&답변
2021.12.15
16:00 부분 질문있습니다.
맞게 이해하신 것 같아요.!
- 0
- 1
- 208
질문&답변
2021.12.15
구조체 포인터의 동적할당 관련 질문입니다.
" 애초에 동적 할당한 구조체 포인터 변수를 배열처럼 사용하는 것은 불가능한 건가요?" -> 아니요 그렇지 않습니다. 사용 가능합니다!! for (int i = 0; i 동적 할당한 구조체 포인터 변수를 배열처럼 사용하는 것이 불가능해서가 아닌, Input 함수의 이 코드가 원인이에요. man_num 에 예를 들어 3 을 입력하셨다면 저 Input 함수의 num 에 3 이 들어올텐데, 3 크기의 배열은 input[0], input[1], input[2] 까지만 접근을 할 수가 있습니다!!! 근데 for문은 3번 돌면서 계속 input[3] 에 접근하고 계세요. input[3].name, input[3].address .. 이런거에만, 즉 배열 범위를 벗어난 곳에서 입력을 계속 반복적으로 받고 계십니다. 그렇기 떄문에 아무것도 입력되지 못한 것이나 마찬가지입니다. for (int i = 0; i 이렇게 고치셔야할 것 같습니다 printf 에 뜨는 경고는.. 동적할당 메모리 사용할 때 원래 이것저것 경고 띄워주더라구요. 잘못된 메모리를 읽고 있단 식으로 뜨는데 신경 안쓰셔도 돼요!
- 0
- 1
- 390
질문&답변
2021.12.15
강의 마지막에 나오는 함수 char* custom_string_input(char* st, int n)가 잘 이해되지 않습니다.
강의의 코드에 의하면 ret_ptr 에 fgets 의 리턴값을 저장해두고 있는데, fgets 는 입력 성공하면 string 버퍼를 가리키는 포인터를 리턴하고 오류와 같은 이유로 입력에 실패하였으면 NULL 을 리턴합니다. 즉, if(ret_ptr) 이 조건문이 true 가 된다는 것은 fgets 를 통한 입력에 성공했을 때만 해당 if 를 실행한다고 할 수 있겠죠. 실패해서 NULL 이면 if 문 실행 안 할테구요.
- 0
- 1
- 197
질문&답변
2021.12.15
매개변수로 포인터를 받으려면, 인자로 넘겨줄때 주소를 넘겨줘야하는 것 아닌가요?
이건 어느 부분에서 나오는건지 저도 잘 모르겠는데... 굉장히 중요한 부분입니다. 첫째, 배열이름은 그 자체로 주소값입니다. 배열 이름엔 주소가 들어가있습니다. 즉, arr 엔 배열의 시작 주소(=첫번째 원소의 주소) 값이 들어있습니다. 그래서 포인터 매개변수엔 그냥 배열 이름 그 자체를 넘기는 것이 당연합니다. 둘째, 배열이름은 & 를 취해도 '배열이름의 주소'가 될 것 같지만 전혀 그렇지 않습니다. &arr 와 arr 은 값이 동일합니다.(단, 타입은 다릅니다. 그래서 저 warning 에서 int (*)[5] 타입과 다르다고 하는 것이구요) 배열의 이름엔 & 취해도 배열이름의 주소가 되는 것이 아닌 그냥 그 배열이름 그 자체에요. 이게 배열 이름과 포인터 변수의 차이입니다. 그렇기에 warning 이 나오는 것 같네요. &arr 해도 의미가 없으며 그냥 arr 로 넘겨도 되기 때문입니다. 이 두 개념을 이미 배우셨는지 아니면 후에 배우시는지 커리큘럼상... 잘 모르겠지만! 굉장히 중요한 부분이구요, 이 두 개념을 생각해보면 질문 주신 두 질문이 해결 되시리라 생각됩니다.
- 0
- 1
- 322
질문&답변
2021.12.15
부모클래스의 생성자 initializer_list 질문
답변이 늦어 정말 죄송합니다 ㅠㅠ 저도 그 이유에 대해 잘 모르겠어서 틈틈히 구글링해보고 찾아보았는데 잘 모르겠네요.. 어렵네요 ㅠㅠ 두번째 이유도 첫번째 이유와 같은 이유로 에러가 나는 것일 것 같네요
- 0
- 1
- 178