다시 오신 걸 환영해요 구조에 대해 계속 얘기해보죠
배열과 어떤 연관이 있는지 말이에요
구조가 배열과 유사하다는 것과 하나 이상의 값을 저장할 수 있다는 걸
얘기했죠 하지만 둘은 달라요 다른 데이터 타입이 있고 그렇게
그룹화할 수 있으니까요
구조물 배열도 알 수 있어요
구조가 얼마나 유용하고 논리적 그룹 관련 요소를 함께 사용할 수
있게 해주는지 봤죠 구조를 정의하는 방법은
여러 가지 요소로 구성할 수 있어요 스트럭트 키워드랑 태그
네임으로요
그런 형식의 변수를 생성하는 방법도 알죠
왜냐하면 구조란 본질적으로 사용할 수 있는 새로운 유형의 데이터거든요
멤버 선정 연산자를 이용해 구조 요소에 접근할 수 있어요
배열 안에 있는 다중 구조를 생성하고
싶다면요? 할 수 있어요
예를 들어, 프로그램에서 사용하는 각 날짜마다 3개가 아니라
하나의 변수만 추적할 필요가 있어요 그게 구조의 장점이죠
프로그램에서 10일을 처리하려면 30일이
아니라 10가지 변수만 파악하면 돼요
구조물 내부에 세 가지 변수가 있다는 걸 기억하세요
변수 10개도 여전히 많아요
최적의 방법은 아니죠 배열을 만들어야 할 거예요
10개의 동일한 형식이 10개의 int와
같으니까요 구조물만 있을 거예요
10가지 다른 날짜를 처리하는 더 나은
방법은 C 프로그래밍 언어와 구조 배열의 강력한 두 가지 특징을
결합하는 거예요
둘을 합치면 더 강력해질 거예요
따라서 여러 구조의 배열을 정의하는 건 전적으로
유효합니다 C#에서 아주 강력하고 중요한 개념이니 잘 보세요
구조 배열을 선언하는 건 다른 배열 선언과 똑같아요
형식을 지정하면∙∙∙ 당연히 구조 형식이죠
Date라는 이름의 구조 배열을 만들고
싶다면 구조 Date라고 한
다음 변수 이름을 입력하고 괄호를 사용하세요
괄호를 써서 다른 배열을 하듯이 크기도 지정해야 해요
이 경우 날짜 구조 유형의 10개의 인스턴스나 10개의 요소를
생성하려면 괄호 안에서 10개라고 해야 해요
10가지 요소로 구성된 my데이트라는 배열을 정의할 수 있어요.
배열 안의 각 요소는 bf 타입 구조데이트로 정의됩니다
멤버는 3명이죠
그러니까 기본적으로 30개의 다른 데이터 세트
30개의 다른 데이터 요소를 저장하는 거죠
배열된 구조의 구성원을 식별하려면 개별
구조에 적용하는 규칙을 적용해야 하죠
구조 이름을 .연산자 다음에 멤버 이름으로 저장하죠
배열 내의 특정 구조 요소를 참조하는 건 꽤 자연스럽죠
두 번째 날짜를 1986년 8월 8일로 설정하려면 이 배열의 이름인
my데이트만 지정하면 돼요 그리고 인덱스도
지정해야죠 두 번째 날짜를 지정하고 있어요
배열은 0이에요 1보다는 1로 하죠
그런 다음 해당 배열 요소의 요소나 해당 구성 요소의
멤버에 엑세스하길 원하면 . month이라고 해요
이것이 마이데이트 배열의 두 번째 요소를 제공할 거에요
이 구조 형식에 대한 월값이요 여기서 8이라는 값을 부여하죠
날짜에 접근하고 싶다면 8일째 날도 할당하겠습니다
8월 8일이니까요 그리고 마지막으로 년도에 대해 .year=1986라고
하죠
이렇게 마이데이트 배열의 두 번째 요소에 세 가지 변수를
할당할 수 있어요 날짜 구조 형식이기 때문이죠
별로 다르지 않다는 걸 아셔야 해요
유일한 차이는 점이 있다는 거죠 보통은 my데이트 sub1 이라고
쓰겠죠. 왜냐하면 하나의 변수만 할당할 수 있기 때문이에요. 배열의
타입에 따라서요.
하지만 이 경우엔 하위 1이고 세 가지 변수가 있어요 그게
구조 안에 있는 세 가지 요소거든요
여러 구조물을 시작할게요
배열의 초기화는 구조를 포함하는데 다차원 배열
초기화와 비슷해요
다차원 배열은 특정 구문을 따릅니다 바깥에는
중괄호가 있고 안쪽에 있는 중괄호는 각 행을 나타내죠
안에 중괄호는 사실 선택 사항이었지만
가독성이 훨씬 높아졌죠 전 그런 관습을 따르는 걸 좋아해요
이 예제에선 날짜 타입 구조 날짜를 생성할 거예요
크기는 5로 하고요 그런 다음 처음 세 요소만 초기화할 거예요
다차원 배열처럼 안에 중괄호가
있어요 제 날짜 배열의 첫 번째 요소는
서브제로 인덱스예요 월은 12일, 날짜는
10일 연도는 1975년이라고 할게요
그런 다음 첫 번째 요소도 똑같이 할 거예요 1980년 12월 30일이에요
세 번째 요소는 2005년 11월 15일이에요
마이데이트 배열의 다른 두 요소를 제공하지 않았기
때문에 어떤 것도 초기화 되지 않을 거예요
첫 세 번의 날짜를 정하는 거죠
1975년 12월 10일, 1980년 12월
30일 2005년 11월 15일이에요
교정기의 내주기는 선택이에요 다차원 영역에서 선택하듯이요
읽기가 더 쉽고 중괄호를 따라 하기가 더 쉬워요 저라면 규칙을
따르겠어요
괄호를 없애고 싶다면 이렇게 할 수도
있어요 하지만 이해하기가 좀 더 어렵죠 쉼표로 나뉘어
있는 거예요 쉼표로 나뉘어 있는 요소나 쉼표로 나뉘어 있는 요소요 이런
걸 많이 사용하면 아주 헷갈릴 수 있어요
매핑을 제대로 해야 해요 쉼표의 4번째 요소라고
하는 거죠 배열의 2번째 요소가 되겠습니다
따라가기 더 힘들죠 그러니 중괄호 안에 있는 걸 쓰세요
배열의 세 번째 요소만 지정된 값으로 초기화하고 싶다면
제 날짜 하위 5를 지정할 수 있어요
여기서 여전히 배열을 생성하죠
여전히 변수를 선언하고 크기를 5로 설정하고 있죠
하지만 중괄호 안에는 괄호 안에
2개가 있고 2는 1210으로
1975년에 초기화할 거예요
대괄호는 초기화하고자 하는 요소를 나타냅니다
할당 연산자는 = 그리고 중괄호 안에는 스트럭트
내의 요소들의 월, 일, 해를 초기화하죠
어떤 요소를 초기화할지 정확히 지정할 수 있어요
날짜와 월만 설정하고 싶다면 마이데이트 배열의 두 번째 요소를 12와 30으로 설정하세요
비슷한 것도 할 수 있어요
쉼표를 찍어서 각각의 속성을 분리하세요
연도를 설정하고 싶지 않다면 중괄호를 사용할 수 있어야죠
.월 1은 12 sub 1 .day는
30이라고 할 수 있죠
이 구문은 다른 곳에서 구성 변수를 초기화하는
것과 아주 유사하죠
유일한 차이점은 배열이기 때문에 배열의 인덱스를 지정해야 한다는 거죠
하지만 비슷한 구문이에요
배열판이 있는 구조물은 어때요?
구조물 내부에 배열을 포함하는 요소들이 있죠
멤버로서 배열을 포함하는 구조도 찾을 수 있어요
유용할 거예요
한 구조 안에서 배열된 캐릭터를 설정하는 게 가장 흔해요
문자열에 대해서는 char 배열을 많이 사용하죠
문자열을 포함하는 구조는 아주 흔해요 문자
배열이죠
예를 들어 월이라고 불리는 구조를 정의하고
싶다면 그 구조는 멤버로서 한 달의 일수를 나타내고
세 글자 약어로 월 이름을 나타내요
거기서 캐릭터 배열을 사용할 수 있어요 구조화의 달이라고 하죠
우린 구조를 정의할 줄 알죠 이건 메모리를 할당하는 게 아니에요
구조는 이렇게 정해져 있어요 이게 그 안에 들어 있는 요소들이에요
여기선 스트럭트 키워드죠 구조물 이름을 말해요 태그 이름은 월이고
왼쪽 중괄호로 요소들을 명시하죠
일수를 정수로 나타내는 요소가 하나 있고 끝에 세미콜론이 있어요
그리고 캐릭터 배열도 있어요 캐릭터 이름 sub-3이죠
3글자니까 크기는 3이에요
그리고 구조는 세미콜론에서 오른쪽 중괄호로 끝나요
하지만 기억하세요 글자는 배열이고 포인터와 밀접한 연관이 있어요
하지만 쉽게 배열을 포함하는 구조를 만들 수 있어요 멤버 요소로
입력하기만 하면 되죠
그래서 월 구조를 설정하는데 일수라는
정수 멤버와 name이라는 캐릭터 멤버를 포함하죠
멤버 이름은 사실 세 글자의 배열이에요 아주 간단하죠
그럼 어떻게 액세스하죠? 먼저 변수를 생성해야죠
변수는 스트럭츠 안에 요소들에 대한 메모리를 생성합니다 그런
다음 8개월 변수인 문자 배열 안에 적절한 필드를 설정하는
거죠 그게 이름이니까요 이름과 날짜가
있었죠 여기서는 name이라고 하고 예제는 a month이라고 하죠
월은 변수 유형이고 name은 요소 유형이에요 맞아요
여기서 구조를 만들죠 형식의 달이에요
변수 이름이 월이에요 아무것도 초기화하지 않아요
우리는 즉시 한 달의 일수를 31일로 정했어요
.인원 선택 연산자를 이용하죠
그런 다음 캐릭터 배열을 할당하고 싶은데
캐릭터 배열에 직접 할당할 순 없죠
전부 서명하려면 str 비교 같은 걸 해야 해요 그렇게 할 수 있어요
인덱스를 사용하지 않아도 돼요 str 복사하세요 월,
이름.쉼표 그리고 큰 따옴표의 jn을
입력하세요 인덱스를 통해 배열의 요소들에 접근할
수도 있어요
여기선 월.name이라고 하죠 이름 멤버 변수나
멤버 요소에 접근해야 하니까요
대괄호 안에서 배열의 인덱스를 지정하죠
J 배열의 첫 번째 글자에 서명하는 걸 찾을 수 있죠 두 번째 A, 세 번째 N
int, 더블, 플로트를 하면 이 구문을
볼 수 있어요 보통 문자 배열이 있을
땐 str 볶음 복사 기능을 써서 모든 걸 큰따옴표로 할당하죠
변수를 선언할 때 비슷한 작업을 해서 같은 값으로
변수를 초기화할 수도 있어요 중괄호 안에요 배열이기
때문에 안쪽에 중괄호와 작은
따옴표를 각 문자에 넣을 수 있어요
배열 내에 12개월 구조를 설정할 수 있습니다 연중 월을 나타내는 거죠
이제 월 변수를 생성할
수 있어요 크기 12 형식의 배열 구조 월이죠 각 달을
나타낼 수 있어요
한 달에 며칠을 쓰고 한 달을 줄여서 쓸 수 있어요
그래서 배열과 구조의 강력한 2가지 개념을
아주 유용하게 활용할 수 있죠
구조물은 많은 요소가 있을 수 있어요
사실 배열의 구조일 수 있죠 그 구조물 내부의 요소는
배열일 수 있고요
다음은 포인터 같은 다른 요소를 포함하는 구조를 사용하는 방법에 관해 얘기할 거예요
구조는 모든 유형의 데이터를 다양한 유형의
데이터로 저장할 수 있어요
배열 개념에 아주 유용해요
도움이 됐으면 좋겠네요 이 컨셉들을 시연하는 데에
어려움이 있을 겁니다 나중에 코드 블록
안에서 예제를 불러오죠 고마워요