구조체 6번째 강의
190
작성한 질문수 81
구조체 6번째 강의에서는 구조체를 선언할 때는 초기화가 필수 라고 하셨는데
여기선 반대로 말씀하시는 것 같아서 어떤게 맞는건지 궁금합니다
답변 1
0
안녕하세요.
둘다 초기화가 필수입니다.
그런데 꼭 new 와 생성자를 사용해서 초기화를 해야 합니다.
ClassPos cpos; 만 사용해서는 클래스가 실행되지 않습니다.
(구조체는 이렇게 사용하고 대입해서 사용가능합니다)
클래스는 아래와 같이 꼭 생성자와 new 를 사용해서 해야 클래스가 동작합니다.
cPos = new ClassPos();
한줄로 사용할때는 ClassPos cPos = new ClassPos(); 라고 해도 동작하고요.
구조체의 경우에도 StructPos sPos = new StructPos(); 로 해도 동작하지만 클래스의 경우에는 레퍼런스와 실제 데이터가 생겨나고 클래스의 경우에는 기본타입(int 등)과 같은 형태의 실제 데이터만 생겨납니다.
(내부적인 동작이 다릅니다)
이게 처음 보실때 혼란스러울수 있는데 같은 문법을 사용해서 사용하는데 내부적인 동작이 달라지는 현상들이 많습니다. C#의 특징중 하나라고 생각하고 있습니다.
질문하신 내용의 답변중의 하나로 생성자가 초기화를 담당하는 함수입니다. 값을 새로 하나하나 대입하는 것도 초기화이지만 생성자 자체를 사용하는 것도 초기화입니다. (내부적으로 멤버변수들이 기본생성자가 실행되면 초기화 되는 것으로 알고 있습니다)
0
그럼 값형식들은 new랑 생성자 없이도 껍데기랑 본체(실제 데이터)가 스택에 생겨서 바로 값만 넣어주면 되고
참조형들은 일단 변수 생성만 하면, 스택에 껍데기만 생성이 되고 본체는 아직 힙에 생기지 않은 상태이며, new랑 생성자를 실행했을 때 비로서, 힙에 본체가 생겨나고 껍데기와 본체사이에 연결이 이뤄지는 거겠네요? 그리고 이걸 참조라고 부르고요
0
네 멤버변수의 경우에도 동일하게 동작합니다. 그런데 멤버변수는 스택에 생겨나지 않고 함수안에서 있는 변수만 스택에 생겨납니다.
그래서 값타입(구조체, 기본타입변수)은 데이터 그대로 생겨나고 클래스타입들은 껍데기랑 본체가 같이 생겨난다고 보시면 됩니다 .
전에 질문하신 이 그림을 한번 더 보시면 "스택은 함수안에서 생겨납니다" 저기 있는 노란 사각형이 스택영역입니다.
나중에 강의를 좀 추가해야 겠네요.
Part4 유니티로 세가지의 게임만들기 강의도 들을 수 있는건가요?
0
262
1
플레이 버튼이 없어요
0
757
1
전체 연습문제 다운방법, 현재 연습문제 파일이 깨져서 열립니다.
0
376
2
연습문제파일
0
262
1
중단점을 찾을수가 없습니다
0
469
1
10분 24초에 만약 b를 0으로 둘시, "나눗셈이 불가능"대신 attempt to divide by zero 오류가 뜹니다.
0
312
1
if문의 비교(10분56초~59초사이)
0
219
1
NullReferenceException을 기대했는데....
0
326
1
C#에서의 메모리 관리
0
273
1
Heap 과 Stack
0
303
1
앞선 강의에서 Instance와 연관 지어서
0
269
3
Instance와 variable
0
243
1
제공 함수는 실제 구현하는 몸체가 없다
1
341
1
인자와 매개변수
1
215
1
코드에서 new GameObject를 실행했을 때 유니티 화면상의 상태 문의
2
621
1
유니티 콘솔화면에 나타난 내용 문의
1
353
1
멤버변수를 전역변수라고 생각해도 되는지요?
1
1225
1
출력만 있는 함수 관련 질문
1
422
2
문제 파일은 어디에 있나요?
0
234
1
제 윈도우용 visual studio에서는 코드행 앞에 아무것도 안찍힙니다.
0
319
2
혹 강의내용을 캡쳐해서 블로그에 공개해도 되나요?
0
364
1
비쥬얼 스튜디오에서 강의대로 입력했는데 콘솔창에 아무것도 안나타나네요.
0
262
1
저는 윈도우즈에서 모니터를 두개로 나눠 강의영상과 Unity작업창으로 나눠서 하고 있는데 무슨 얘긴지 하나도 모르겠어요
0
229
2
갑자기 파일을 추가하려면 과정을 설명해 주셔야 하는데 그냥 파일부터 추가하네요.
0
171
1





