소개
강의
전체5수강평
- 전공자가 아니어도 이해하기 쉽고 재밌어요
신소영
2024.04.15
0
- 명강의 입니다 ㅎㅎ
HJ
2024.04.12
0
- 도움이 되는 강의었습니다!
heejeong304
2024.04.03
0
게시글
질문&답변
2024.02.11
10분 15초경 질문
원 질문글에 대한 답변이 틀린 부분이 있어서 수정해 놓았습니다. 간단히 요약하면 C언어에서 배열 대입을 안해주기 때문입니다. 제가 틀린 부분은 이 오류는 Text segment가 read-only인 것과는 상관 없다는 점입니다. 부연 설명도 같이 적어놨습니다. 아래 AI 자동 답변은 저와 무관합니다.
- 2
- 2
- 188
질문&답변
2024.02.11
(강의 10:21) 배열의 이름 dest에 "Start something"을 대입하는 것이 안되는 이유
안녕하세요? 오랫만에 이 질문에 대해 다시 질문이 들어와서 봤는데, 아래 답변에 잘못된 부분이 있어서 수정하겠습니다. gcc에서 아래 코드를 컴파일하려고 시도하면 char dest[100] = ""; dest = "Do Something"; error: assignment to expression with array type 배열에 대입하려고 시도했다는 에러가 발생합니다. C언어에서는 배열의 값을 바꾸고 싶을때 간단한 대입을 사용할 수 없습니다. strcpy, memcpy로 메모리 블럭을 복사하거나 아니면 for문으로 하나씩 대입해야 합니다. 우리 입장에서는 그냥 좀 해주지 싶겠지만 C언어를 설계하신 분들 입장에서는 사용자가 해야할 일이라고 판단하신 것으로 추측됩니다. 반면에 초기화할때는 가능합니다. char dest[100] = "Do Something"; // 그 다음은 제가 답변드리면서 헷갈렸던 사안인데, char *a = "Do Something"; a[0] = 'A'; // printf("%s\n", a); // 이 부분은 강의 다른 부분에 설명이 있었을텐데 "Do something"은 프로그램의 일부로써 read-only 읽기 전용 영역에 들어있기 때문에 변경 시도가 어떤 문제를 만드는 것입니다. 반면에 아래 코드는 정상작동합니다. 왜냐하면 dest 배열이 스택에 수정가능한 메모리를 갖고 있고 거기에 "Do something"이 복사되어 있는 상황이라서 dest[0]으로 한 글자를 수정할 수 있습니다. char dest[100] = "Do Something"; dest[0] = 'A'; printf("%s\n", dest); 다시 원래 질문글로 돌아오면, error C2106: '=': left operand must be l-value VS의 컴파일러에서 제공해주는 에러 메시지가 모호했던 것 같습니다. 저는 문법 확인용으로 gcc를 급하게 사용하고 싶을 때 온라인 컴파일러를 사용합니다. 아래 캡쳐 화면 참고하세요. (사진)
- 1
- 2
- 291
질문&답변
2024.02.06
다중 상속 시 부모 클래스 간 생성자 호출 순서가 궁금합니다.
아 그리고 이런 생성자 호출 순서를 고려해야 하는 작업이 있나요? 객체지향적으로 설계한다면 생성자의 호출 순서에 따라 결과가 바뀌도록 설계하진 않을 것 같아서요. -> 이상적으로는 그렇게 생각하실 수 있지만, 실제로는 그런것들까지 고려해서 작성합니다. C++을 사용할 때는 (보통) 성능을 위해 다른 요소들을 희생시키는 경우가 많습니다. (예: 비숙련자를 위한 API 편의성)
- 1
- 2
- 199
질문&답변
2024.01.15
vsc반드시깔아야하나요
오해가 있었던 것 같은데 VSCode 사용법은 간혹 VSCode를 쓰고 싶어하는 분들이 계셔서 추가한 것이고 초보자에게는 Visual Studio 권장합니다.
- 1
- 1
- 149
질문&답변
2023.12.25
mingw-w64 폴더 설치 중 에러
잘하셨어요. 초보때는 이것저것 해보시는 과정이 필요합니다.
- 2
- 1
- 140