[음악 재생] DOUG 로이드 : 좋아. 하나의 작업 변수는 꽤 재미있다. 하지만 우리가 원하는 경우에하는 일을합니다 변수가 많은, 그러나 우리는 잔뜩 가지고 싶지 않아 우리의 코드 주위에 다른 이름을 비행? 이 경우, 배열은 정말 편리 할 것. 배열은 정말 기초 자료이다 어떤 프로그래밍 언어에 대한 구조 당신이 사용됩니다. 그리고 그들은, 정말, 정말 유용하다 특히, 우리는 CS (50)에서 볼 수있다. 우리는 잡아 배열을 사용 동일한 데이터 유형의 값 연속적인 메모리 위치에서. 즉,이다,라고하는 것입니다 방법 우리는 그룹 수 함께있는 정수의 무리 메모리 또는 문자의 무리 또는 정말 메모리에 수레 함께 닫고 작업 그들 각각을주지 않고도 하나의 고유 한 이름, 수 잠시 후 성가신. 이제 한 가지 방법은 배열을 유추하기 해당 지역의 게시물에 대해 생각하는 것입니다 초 사무실. 그래서 프로그래밍에서 멀리 단계 그냥 눈을 감고 당신의 마음에 시각화 해당 지역의 우체국. 일반적으로, 대부분의 게시물 사무실, 대형 은행에있다 벽에 우체국 상자. 배열은 거대한 블록 연속 메모리, 메일하는 것과 동일한 방식으로 우체국 은행 큰 공간에 우체국의 벽. 배열은, 작은으로 분할 된 동일 공간의 크기의 블록, 이들은 각각에서, 소자라고 같은 방법으로 게시물의 벽이 사무실은 작은으로 분할 된 동일 공간의 크기의 블록, 저희는 PO 상자를 호출합니다. 배열의 각 요소 수 , 특정 양의 데이터를 저장할 각 우체국 상자 수있는 것처럼 메일의 일정 금액을 개최합니다. 각 소자에 저장 될 수있는 것을 배열은 동일한 데이터의 변수이며 같은 단지 지능이나 문자 등의 유형, 우체국 상자처럼, 당신은 단지 물건을 넣을 수 유사한 유형의, 이러한 문자 또는 작은 패키지로. 마지막으로, 우리는 각각의 요소에 액세스 할 수 있습니다 직접 인덱스 번호로 배열, 우리는 우리의 우체국에 액세스 할 수 있습니다 것처럼 그 사서함 번호를 알면 상자. 바라 건데, 그 비유 당신은 당신의 머리를 얻을 수 있도록 도와 배열의 아이디어로 주위 다른 것으로 유추 당신은 아마 있음 이미 잘 알고. C에서, 어레이의 요소는 1에서하지, 0에서 시작하는 인덱스. 그리고 이것은 정말 중요합니다. 우리는 왜 그리고 사실, 이것이, CS (50), 자주 왜 컴퓨터 과학자 0에서 계산합니다입니다 때문에 C의 배열의 항상 0에서 시작 색인,. 배열이 n 개의 요소로 구성되어 있다면, 그 어레이의 첫 번째 요소 인덱스 0에 위치하며, 배열의 마지막 요소 인덱스 n은 마이너스 1에 위치하고 있습니다. 다시 말하지만, n 개의 요소가 있다면 우리 배열은, 마지막 인덱스는 N 마이너스 1입니다. 그래서 우리의 배열은 50 요소가있는 경우 첫 번째 요소는 인덱스 0에 위치 마지막 요소 인덱스 49에 위치하고 있습니다. 불행하게도, 또는 다행히, 당신의 관점에 따라, C는 여기에 매우 관대하다. 그것은 방해가되지 않는 배열의 범위를 벗어 것. 당신은 마이너스에 액세스 할 수 있습니다 배열의 3 요소 또는 배열의 59 번째 요소, 배열은 50 요소가있는 경우. 그것은에서 프로그램을 멈추지 않을 것입니다 컴파일하지만 실행시에, 당신은 발생할 수 있습니다 지칠대로 지친 세그먼트 오류 당신은 메모리에 액세스 시작하는 경우 그 무엇의 경계 밖에 당신은 당신을 줄 수있는 프로그램을 물었다. 그러니 조심 않습니다. 어떤 배열을한다 선언처럼? 우리는 존재로 배열을 코딩 어떻게 같은 우리는 다른 변수를 코드? 세 부분 배열에있다 유형을 declaration--, 이름, 및 크기. 이것은 매우 유사하다 변수 선언, 어떤 막 종류 및 이름이고 인 크기 소자 배열의 특별한 경우, 우리는 그들의 무리를지고 있기 때문에 동시에. 그래서 형 변수의 종류는 당신 배열의 각 요소가되고 싶어요. 정수의 배열로 하시겠습니까? 그런 다음, 데이터 타입은 INT해야한다. 당신이 될시겠습니까 더블 또는 수레의 배열? 데이터 유형은 배정 수 또는 float한다. 이름은 무엇을 당신 어레이를 호출 할 수 있습니다. 이 거대한 이름을 원하는 작업 정수 또는 수레 또는 문자의 은행 또는 두 배, 또는 무엇이든 당신이? 당신은 무엇을 호출 할 수 있습니까? 꽤 자기 ​​설명. 마지막으로 이동, 크기, 대괄호의 내부, 얼마나 많은 요소는 것 배열에 포함 할 수있다. 당신은 얼마나 많은 정수를 원하는가? 당신은 얼마나 많은 수레를 원하십니까? 그래서 예를 들어, 학생 성적 (40)를 int로. 이 학생라는 배열을 선언 40 정수로 구성 등급,. 꽤 자기 ​​설명, 나는 희망한다. 여기에 또 다른 예입니다. 두 번 메뉴 ​​가격 8. 이것은라는 배열을 만듭니다 로 구성 메뉴 가격, 팔 두 배의 메모리에 방. 당신은 모든 요소를​​ 생각하면 입력 데이터 타입의 배열, 그래서 예를 들면, 하나의 요소 int 형의 배열, 같은 방식으로 당신에게 다른 생각할 것 int 형의 변수, 모든 익숙한 작업을 우리가 작업에 앞서 논의 비디오는 의미가됩니다. 그래서 여기, 우리는 배열을 선언 할 수 Truthtable라는 부울의, 이는 10 부울위한 공간으로 구성되어 있습니다. 그리고, 단지 우리가 할당 할 수 좋아 다른 유형의 변수 값 부울, 우리는 뭔가를 말할 수 Truthtable 대괄호 같은 우리가 표시하는 방법 2,, 어떤 진실 테이블의 요소? 의 세 번째 요소 진리표, 기억하기 때문에, 우리는 0에서 믿고있어. 그래서 우리가를 나타내는 방법 진실 테이블의 세 번째 요소입니다. Truthtable 2, 거짓과 동일 단지 우리가 declare-- 수 등 또는 우리는 오히려, 할당 할 수 있습니다 부울 형 변수는 거짓. 또한 조건에서 사용할 수있다. (truthtable 7 == 경우 말을하는 것입니다 TRUE),, 여덟 번째 요소 경우 Truthtable의 사실이다 어쩌면 우리는 메시지를 인쇄하려면 사용자의 printf ( "TRUE! N")에 ;. 즉 Truthtable 말을 우리의 원인 10 바로, 진정한 같다? 글쎄, 난 할 수 있지만, 그것은 꽤입니다 위험 때문에, 기억 우리는 10 부울의 배열을 가지고있다. 그래서 가장 높은 인덱스 그 컴파일러는 우리가 9입니다 주었다. 이 프로그램은 컴파일하지만 것 경우 메모리에 뭔가 다른 여기서 우리가하고자 존재 Truthtable (10)가 갈 것으로 예상, 우리는 세그먼트 오류를​​ 입을 수있다. 우리 그것으로 멀리 할 수​​ 있지만, 일반적으로, 꽤 위험한. 그래서 내가 여기서 뭘하고있어 법적 C가, 그러나 반드시 최고의 이동. 지금, 당신은 선언 할 때와 동시에 배열을 초기화, 실제로 꽤있다 특수 구문 당신을 배열을 채우기 위해 사용할 수 있습니다 그것의 시작 값. 그것은에 성가신 얻을 수 있습니다 사이즈 (100)의 배열을 선언 다음 말을해야, 요소 0 이 같음; 요소 1이 같다; 요소 2는 동일합니다. 오른쪽 점은 무엇입니까? 그것은 작은 배열의 경우, 같은 것을 할 수 있습니다. 부울 truthtable 3 오픈과 동일 중괄호 다음 쉼표 요소의 목록을 분리 당신은 배열에 넣어하려는. 그런 다음 중괄호 세미콜론을 닫습니다. 이 배열을 생성 크기 Truthtable라는 세, 요소, 허위 사실, 참으로. 실제로, 실체화 내가 여기에이 구문은 일을 정확하게 같은 아래의 개별 요소 구문. 코딩이 두 가지 방법 것 동일한 배열을 생산하고 있습니다. 마찬가지로, 우리는 반복 수 모든 요소를​​ 통해 루프를 사용하는 배열에서의 사실은 매우 권장은 재택 운동. 어떻게 배열을 만들려면 어떻게해야합니까 100 정수의 배열의 모든 요소는 인덱스? 그래서 예를 들어, 우리는 (100)의 배열을 가지고 정수 및 제 1 소자에있어서, 우리는 0을 넣어합니다. 두 번째 요소에서, 우리는 (1)을 넣어합니다. 세 번째 요소에서, 우리는 원하는 (2)를 넣어; 등등 등등. 그건 정말 좋은 에서 가정 운동은 그렇게 할 수 있습니다. 여기서, 보이지 않는 같은 너무 많이 변경되었습니다. 그러나 사이를 통보 대괄호,이 시간, 실제로 수를 생략했습니다. 당신이 사용하는 경우이 매우 특수 인스턴스 구문을 만들 수 있습니다 배열, 당신은 실제로하지 않습니다 크기를 표시해야 배열의 사전. 컴파일러는 똑똑 실제로 알고 크기 (3)의 배열을 할 당신은 세 가지 요소를 넣어 때문에 등호의 오른쪽에. 네 개의을 두었다면, 그것은 것 당신은 크기 4 인 진실 테이블을 제공; 등등 등등. 어레이는 하나에 한정되지 않는다 꽤 멋진 차원. 당신은 실제로 많은있을 수 있습니다 측면 지정자 당신이 원하는대로. 그래서 예를 들어, 당신은 만들려면 게임 전함을위한 보드, 혹시 재생하는 경우, 인 게임이다 10 그리드로 (10)에 못 경기 이 같은 배열을 만들 수 있습니다. 당신은 Bool로 말할 수 전함 광장 브래킷 (10) 폐쇄 대괄호 광장 브래킷 (10)는 대괄호를 마감했다. 그리고, 당신이 선택할 수 있습니다 10 당신의 마음이 해석 세포의 10 그리드로. 지금, 사실, 메모리, 그것은 정말 않습니다 , 100 요소 유지 단일 차원 배열. 그리고 이것은, 사실, 경우에 간다 세 가지 차원 또는 네다섯 있습니다. 그것은 정말 곱 않습니다 indices--의 모든 또는 크기의 모든 함께 specifiers--, 당신은 단지 하나의 차원을 얻을 그 크기의 배열입니다. 그러나 조직의 측면에서와 시각화 및 인간의 지각, 그것은 훨씬 쉽게 할 수 있습니다 격자로 작업하기 당신은 게임에 작업하는 경우 틱택 토이나 전함 등, 또는 그런 일. 그것은 큰 추상화이다, 대신 데 틱택 토 생각합니다 아홉의 라인으로 보드 사각형 또는 전함 보드 (100) 사각형의 선으로. 10 그리드 또는 세에 의해 10 3 격자는 아마 훨씬 더 쉽게 인식 할 수 있습니다. 이제 뭔가 정말 배열에 대한 중요. 우리는 각 개인을 처리 할 수​​ 있습니다 변수로 배열의 요소. 우리는 이전에보고 때 우리가 할당 된 특정 부울 true로 값 또는 조건문에서 그들을 테스트. 그러나 우리는 전체를 처리 할 수​​ 없습니다 변수로 자신을 배열. 우리는, 예를 들어, 하나의 어레이를 할당 할 수 없다 할당을 사용하는 다른 배열 운영자. 그것은 법적 C. 아니다 우리는 example--을 위해, 원하는 경우 어떻게 우리는 그 예에서 일을 할 것입니다 다른에 하나의 배열을 복사하는 것입니다. 우리는, 우리가 실제로 작업을 수행 할 경우 위에 복사하는 루프를 사용할 필요 한 번에 각각의 개별 요소 하나. 나는 그것이 걸리는 시간이 좀 알아. 그래서 예를 들어, 경우를 우리는이 커플이 있었다 줄의 코드,이 작품은 것? 음, 아니, 그것은 바로,하지 않을까요? 우리가 노력하고 있기 때문에 바 음식을 할당합니다. 즉, 작동하지 않을 것, 이 배열이기 때문에, 그리고 우리는 단지 설명 그 법적 C. 아니에요 대신, 우리는 원하는 경우 음식의 내용을 복사 무엇 인 바,에 우리는 여기에서하려고하​​는 우리는이 같은 구문을해야합니다. 우리는 루프에 대한 그 진행이 일본에서 5 0과 동일 우리는 모든 반복에 J를 증가 루프와 같은 할당 요소. 이것은 또한 바 초래 되는 하나, 둘, 셋, 넷, 다섯, 그러나 우리는 매우 그것은이 작업을 수행해야 느린 원소 별 방법, 대신 단지로 전체 배열을 복사. 다른 프로그램에서 언어, 더 현대적인 것, 당신은 실제로 단지 할 수 그 문법을 간단 같습니다. 그러나 C, 불행하게도, 우리는있어 그렇게 할 수 없습니다. 이제, 다른 하나는있다 것은 내가 언급 할 배열에 대해 그건 좀 될 수 있습니다 비트 까다로운 처음으로 당신에게 그들과 함께 작동합니다. 우리는 비디오에서 논의 변수 범위에 대한, 당신이 전화를 C에서 가장 변수 그들은 기능에, 값에 의해 전달됩니다. 당신은 그것이 무엇을 의미하는지 기억하십니까 값으로 뭔가를 전달하는? 그것은 우리의 복사본을 만들고있어 의미 에 전달되고있어 변수입니다. 호출자 함수, 함수 즉, 변수를 수신하는 것 변수 자체를하지 않습니다. 그것은 자신의 지역을 얻는다 그것의 복사본이 작동한다. 배열은 물론, 수행 이 규칙을 따르지. 오히려, 우리는이 부르는 참조로 전달합니다. 수신자 실제로 배열을받을 않습니다. 그것은받지 않습니다 그 그것의 자신의 로컬 복사본. 그리고 당신이 생각하는 경우 그것은,이 의미가 있습니다. 어레이는 실제로 큰 경우, 그것을 너무 많은 시간과 노력이 필요 배열의 복사본을 만들 100 1,000 10,000 요소, 그것은에 대한 가치가 아니에요 그것의 복사본을 수신하는 기능, 다음에 몇 가지 작업을 수행하고, 그냥 복사하여 수행 할; 그것은이 필요하지 않습니다 그것은 더 이상 주위를 어슬렁. 배열이기 때문에 일부 부피가 크고 복잡, 우리는 단지 참조를 전달합니다. 우리는 단지 그 기능을 신뢰 아무것도 파괴하지 않는합니다. 그래서 실제로 배열을 얻을 수 없습니다. 그것은 그것의 자신의 로컬 복사본을받지 않습니다. 그래서 이것은 무엇을 의미합니까, 다음, 때 수신자 어레이의 엘리먼트를 조작? 무슨 일이야? 지금, 우리는 광택 것 이유를 정확히 이상 왜 배열을 발생 참조에 의해 전달된다 다른 모든 것들은 값을 기준으로 전달됩니다. 그러나 나는 당신을 약속, 우리는 것 반환 당신에게 대답을 나중에 비디오에서이한다. 여기 당신을위한 또 하나의 운동이다 우리는 배열에 일을 마무리하기 전에. 여기에 코드의 무리, 그건 하지 특히​​ 좋은 스타일, 다만 그 경고를 만들 수 있습니다. 여기에 댓글이 없습니다, 이는 아주 나쁜 형태입니다. 하지만 내가되고 싶어하기 때문에 만이다 화면에 다 들어갈 수. 상단에, 당신은 내가 가지고있는 것을 볼 수있다 세트 어레이에 두 개의 함수 선언 및 INT를 설정합니다. 설정 배열은 분명히 배열을 취하는 입력 4 개의 정수. 그리고 설정 INT는 분명히한다 입력으로 하나의 정수입니다. 그러나 이들 모두는 출력이 없다. 출력, 반환 각자가 무효의 입력하십시오. 홈페이지에서, 우리가 코드 라인의 커플. 우리는 정수 변수를 선언 라고하고 그것을 값 10을 할당합니다. 우리는 네 개의 정수의 배열을 선언 B 전화를 요소 0, 1을 할당, 각각 2, 3,. 그런 다음, 우리는 설정하는 전화가 int로 및 전화 배열을 설정할 수 있습니다. 세트 배열과 세트의 정의 INT는 아래에, 아래 다음과 같습니다. 그리고 다시, 나는 당신에게 질문을. 무엇 인쇄됩니다 여기에 메인의 끝? 인쇄 출력 COL이있다. 나는 해요 두 개의 정수를 인쇄. 내가의 내용을 인쇄하고 있는데 B 광장 브래킷 0의 내용. 여기에 비디오를 일시 중지하고 분 정도 걸릴. 당신은 어떤이를 알아낼 수 함수는 마지막에 인쇄됩니다? 바라건대, 당신이 기억하는 경우 값에 의한 전달 사이의 구별 참조로 전달이 문제는 너무 까다하지 않았다. 대답 그리고 당신은 것 발견이입니다. 당신은에 관해서는 정말 확실하지 않은 경우 그 사건이 왜, 두 번째를 취할 돌아가, 난 그냥 무엇인지 검토 배열을 전달 대해 논의 참고로, 전달에 비해 값을 기준으로 다른 변수, 희망, 그것은 만들어 줄게 조금 더 의미. 나는 더그 로이드 해요, 이것은 CS50입니다.