[테마 음악] 스피커 1 : 안녕하세요, 여러분. 섹션에 다시 오신 것을 환영합니다. , 난 왜 사랑스러운 날 병원을 나온 물론, 여기에 네 개의 당신이 있습니다 아니라 우리의 보통의 팩. 나는 이번 주말에 아픈왔다. 그래서 난 너희들을 위해 별 모양이 없습니다. 그리고 기침을 시작할 수 있습니다 정말이 전역. 그래서 그냥 참아. 정말 볼게요 그리고, 먼저 통과 하지만, 전에 나는 기침 공격을합니다. 그러나 날에 쉽게 그 bit-- 작은 물어 전부입니다. 그래서 했죠 - 우리의 의제 단지 reminder-- 퀴즈는 다음 주입니다. 나는 그래서 당신이 지난 주에 말했다 가드를 당신을 잡을 것입니다. 그래서 나는 당신을 다시 생각 나게 해요. 다음 주 퀴즈. 이를 위해, 다음 주 섹션은 훨씬 더 될 것입니다 집게 리아 나는 시도하고 일부 리뷰에서 일 것이다. 너희들이 할 수 있다면 그래서 저를 보내 나를 도와 당신이 드시 일 당신이 걱정하는,과 당신이하고 싶은 주제 내게는 좋은 것, 커버하는. 그래서 나는 시도하고 작업 할 수 있습니다 우리의 섹션 다음 주에 또는 당신에게 여분의 재료 또는 준비를 보내 다른 곳에서 얻지 못할 수도있다. 그래! 더 많은 사람들이오고있다! 나는 심하게 마지막 그렇게 않았다, 생각 주, 아무도 돌아오고 싶어한다는? 나는 무서워. 다른 세 가지 그래서 우리는 가서 거라고 아르 리디렉션, 파일 I / O, 및 다음 포인터와 동적 메모리. 난 당신이 모든 약 슈퍼 흥분 확신 pointers-- 모두가 좋아하는 주제, 이해하기 간단. 난 너희들이 좋아 것을 가지고 확신? 그래서 첫 번째 것들 먼저, redirection-- 이것은 기본적으로 그냥 방법입니다 어떻게 당신에게 입력을 제어하는 프로그램에 일, 어떻게 당신의 프로그램에서 출력 할 것. 주요 방법 너희들 그것과 상호 작용 한 단지 표준 출력을 통해서이다 여기에 인쇄 화면. 그러나 방법이 있습니다 우리가 여기에 참조로 pipe-- 우리의 words-- 종류 중 하나입니다 파이프 정보의 또는 파일에서 파일로 데이터. 그것은 단지 다른 방법이다 프로그램에 물건을 받고 당신의 프로그램 중, 대신 바로이 화면에 인쇄 또는 일을 입력 명령 줄에서. 그래서 첫 번째는 조금 캐럿보다. 그냥 출력을 인쇄 output-- 그래서 대신 화면의 파일에. 당신은 인쇄 일을했다 그렇다면 "안녕하세요, 세계!" 화면에, 대신 넣어 경우 , output.text 해당하는 output.text이라는 파일을 만듭니다. 당신이 그것을 열 때, 그것은거야 "안녕하세요, 세계!"라고 거기에. 이것은 매우 유용 할 수 있습니다 당신은 오류의 톤이있는 경우 실제로, 우리는이 하나에서 볼 수있다. 두 캐럿을 할 경우에는거야 오류 메시지를 인쇄 할 수 있습니다. 당신은 문제가 있다면 그래서 컴파일, 그것은 오류를 많이하고있다 당신은 노력에 애로있어 명령 줄에서 스크롤하기 모든 그들을 통해, 당신은 할 수 그냥 파일로 인쇄 그래서 그 파일을 엽니 다 그들을 통해 쉽게 스크롤 할 수 있습니다. 실제로 것을 사용 많은 때 디버깅했다 기계 학습에 대한 내 181 psets를. 그래서 나중에 슈퍼 유용 할 수 있습니다. 당신이 프로그램이 경우에도 유용 어쩌면 라이브러리를 생성 또는 일부 세트를 생성 문자열, 그리고 볼 수 있어야 그것은 적절하게 만들어 줄 것입니다. 이 그렇게 할 수있는 방법입니다. 그래서 당신은, 파일을하여 인쇄하는 경우 더 쉽게 검사 할 수 있습니다, 맞죠? 스크롤 시도하는 것보다 명령 줄을 통해. 그리고 한 가지주의해야 할 그 단지 큰 함께 캐럿보다, 당신이 작성하는 경우 이미 exists-- 파일 그래서 우리는이 첫 번째 실행 한 경우 등 시간, 우리는 output.text에 넣어 그리고 우리는 두 번째 프로그램을했다 프로그램 두 가지로이 인쇄 된 것을 그리고, output.text보다 더 큰했다 그렇게 거저 덮어 쓰게됩니다 그 어느 무엇 덮어 해당 파일로 시작합니다. 당신이 추가 싶다면 파일에, 우리가 여기에 참조로, 당신은 단지 징후 이상의 큰 작업을 수행. 그리고 여기에 추가합니다. 그것은을 덮어 쓰지 않습니다. 여러 실행해야한다면 프로그램은 종류의 유지 및 그들 모두가 무엇 추적 파일에 당신에게 반환 즉, 그것을 할 수있는 방법입니다. 당신은 상관하지 않을 경우 파일에 무엇을 그것은, 덮어 쓰기 할 수있어 당신은보다 하나 이상을 사용할 수 있습니다. 즉 모든 사람에게 의미가 있습니까? 청중 :처럼 점은 큰 안녕하세요 슬래시 출력 도트 텍스트보다, 같은 두 번, 그냥 만 출력에 표시합니다 도트 텍스트 두 번째 외엔 ... 스피커 1 : 맞아요. 그래서 그냥 완전히 기본적 것 로 시작하는이 무엇 덮어 씁니다. 여기에서,이 파일 만약 이미 output.text 당신이 전화를 기본적으로 어떤 존재 그 또 하나의 이상으로 당신은 생각할 수있는 것보다 등 그 파일을 대체. 당신이 단어를 저장 할 때처럼 당신이로 저장 할 문서와, 당신은 동일한 이름을 유지하고, 완전히 하구 덮어 이 물건의 같은 종류입니다. 사람에 대한 질문이 그냥 파일로 출력? 신난다. 그래서 분명히, 당신은 리버스 경우 방향 화살표, 그것은 입력을 할 수 있습니다. 그래서 너희들했을 때 시저 또는 Visioneer의 같은 당신은 입력 뭔가를했다, 당신은 명령 줄 인수했다 그것은 실제로 입력. 이것은 그렇게하는 또 다른 방법입니다. 그래서 그 대신 대기 명령 프롬프트, 당신이 물었을 때처럼 시저 또는 Visioneer의에서 메시지, 는 텍스트 파일이 있다면 즉, 메시지를했습니다 당신은 단지에 입력 할 수있다. 이 점처럼한다면 그래서 시저를 슬래시 3 화살표 입력 텍스트, 이하 어느 당신의 메시지는,이다 잘 실행됩니다. 때 시저 프로그램을 실제로 사용자의 입력을 요청, 이미 때문에있을 것입니다 이 파일에 입력했습니다. 즉 또 다른 방법입니다. output-- 그냥 역 당신의 데이터를 바로 입력. 그리고 마지막 하나는 파이프입니다. 그래서 하나의 정말 멋진. 그것은 당신을 수 있으므로 하나의 출력을 프로그램과 같이 넣어 다른 프로그램에 입력. 난 당신이있는 경우를 모른다 암호문 해독 연주 그 CS50는있을 수 있습니다 이 것을 제공하지만, 당신은 몇 가지 샘플을 채취 할 수 있도록 , 파일 암호화에 입력, 다음 거기에서 입력 당신의 암호 해독에 그 확인 확인 동일한 밝혀졌다. 그래서 종류의 세 방향 루프처럼. 그것을 위해 이동합니다. 청중 : 프로그램의 경우 여러 개의 입력 단자가 어떤 입력을 알 수있는 방법이있다 위한 텍스트 파일 또는 출력을 사용 하는가? 스피커 1 : 그것은 여러 개의 입력을 가지고있다. 그것의 때 input-- 파일 무엇이든간에 입력을위한 첫 번째 시간을 요구, 그건 가고는, 내가 생각하기에, 가정 전체 파일에 파이프로 이동. 여러 개의 입력을 가지고 있다면, 당신이있어 그래서 여러 파일에서 배관 할 것. 그래서 만약 당신이 메시지를 요구하고 코드에서 세 번, 당신은 퍼팅 할거야 세 가지 다른 파일. 그리고 그것은 미친 가져옵니다. 그리고 당신은 필요가 없습니다 지금 그것에 대해 우려하고있다. 하지만 그 생각이다. 그래서 그래, 파이프는 하나의 단지 출력입니다 프로그램은 다른에 입력을 사용합니다. 모두가 좋은? 쿨. 확인을 클릭합니다. 당신은 아마 필요가 없습니다 그것으로 너무 많은 일을 수행 할 수있다. 하지만 당신은 이해해야합니다 방법은이를 사용할 수 있습니다. 그리고 경우가있다 그 당신은 그것을 사용할 수 있습니다. 그래서 / O-- 당신이있어 알고 파일 말했듯이 우리는 읽는 데 사용하고 거기에 우리의 화면에 기록, 있는 표준 및 표준 출력이다. 그리고 너희들이되었습니다 무엇 여기에 클래스의 시작부터하고. 그러나 당신은 또한 파일을 읽고 쓸 수 있습니다, 나는 / O-- 그래서 입력을 파일 모든 파일입니다, 출력은가 약자 모든입니다. 그래서 이것은 기본적 것을 의미한다 당신은 지금 당신의 데이터를 저장할 수 있습니다. 당신은 단지 그것을 인쇄 할 때 화면은 기본적으로 마우스 오른쪽 사라 졌어요? 즉시 안녕하세요 "만들기로 세계 "를 실행에"Hello World " 그것은 화면에 "Hello World"를 출력합니다. 하지만 당신은 정말 할 수 없어 그곳에서 아무것도. 당신은 텍스트로 저장하는 경우 파일, 갑자기 당신은 당신이 허용 된이 데이터를 조작하거나 파일에 넣어, 이상 프로그램에 넣어. 이유 중 하나는 왜 우리가이 단지입니다 나중에 사용하기 위해 데이터를 저장하는 방법이있다. 여기 몇 가지 단계가 다만 표준을 걷는 I / O. 단계에서, 당신 참조를 만들 필요가 모든과 파일에 캡은 스타 파일. 그래서 파일에 대한 포인터를 만듭니다. 그럼 당신은 그것을 열려. 그리고 당신은, 말 그대로, 말 단지 파일 FOPEN 같습니다. 그리고 이것은을 반환하는 것입니다 방금 연 파일의 포인터. 당신의 몇 가지를 보았다 근무 시간에 친구들. 그러나 것들 중 하나 기억해 포인터입니다 바로 일부 주소 또는 널 (null)이 될 수 있습니다? 우리는 어느 경우 어디에가있는 경우 뭔가, null를 돌려 수 우리는 무엇을해야합니까 무엇 우리는 지금까지 그것을 사용하기 전에? 우리는 있는지 확인해야합니다 널 (null) 여부, 맞아? 여러분 중 몇몇은 있었다 수 있기 때문에 문제가 어디에서 어떤 객체 브레이크 아웃에 반환되었다 null입니다. 당신은 수행하려고 거기에 몇 가지 기능. 그리고 컴퓨터 사이트에 오류. 오른쪽? 난 당신이 몇 내기 그 문제를 가지고있을 수 있습니다. FOPEN에 따라서는 fopen 어느 것 파일에 대한 포인터를 반환, 또는 뭔가 잘못되면, 널 (null)을 반환하는 것입니다. 그래서 당신은 항상 확인해야 null을 반환하지 않았 음 당신은 다른 작업을 수행하기 전에. 이 표준 패러다임처럼 여기에 필요 거라고. 기회는 지금이 있다면 그 뭔가, null를 돌려 수 확인에게 그것을 확인하십시오 당신은 진행되지 않습니다 전에. 그렇지 않으면, 당신은거야 사랑스러운 사이트 오류를​​ 얻을 수 있습니다. 그리고 아무도 그와 거래를 좋아한다. 우리가 여기서 보는 바와 같이, 첫 번째 인수 그래서 파일에 바로 경로입니다. 그 파일이 존재하지 않으면 그것은 그 파일을 만들 것입니다. 그리고 그것은 단지 빈 될 것. 그리고 두 번째 인수 원하는 모드입니다. 우리는이 파일에서 읽을 수 있습니까? 당신은 그것에서 작성 하시겠습니까? 당신은 추가 하시겠습니까? 그래서 실제로 내가 방금 말했던 것을 파일이 존재하지 않는 경우 당신은 읽기 위해 노력하고 그것은, 그것은 오류가 발생하는 것입니다. 파일이 경우 같은 이름 - 만약 file.text는 아직 존재하지 않는 당신이 쓰고 싶은 여기에, 그것은 생성합니다 당신을 위해 file.text라는 빈 파일. 그리고 당신은 추가하려는 경우, 당신은 같은 일을해야합니다. 그 의미가 있습니까? 당신은에서 읽으려고하는 경우 아직 존재하지 않는 파일, 이 오류가 발생합니다. 그렇지 않으면, 파일을 생성 할 것이다 에 대한 당신은 당신이 원하는 것을 할. 쿨. 이제 우리는 파일에서 읽을 수 있습니다. 그리고는가는 가지입니다 다른 기능을 통해 우리는 파일 I / O를 위해이 있는지 확인하십시오. 이 의지 이 주 PSET에 필요 내가 정확히 기억합니다. 예, 그것은 절대적으로 될 것입니다 이번 주 PSET 필요. 그래서는 fgetc 다음 문자를 반환합니다. 다만 행의 텍스트를 반환 쓴 fgets. 그것은 아무것도를 반환합니다 개행 깨질 것이다. 그래서 FREAD 특정을 읽고 바이트와​​ 장소를 수 배열에있는 뭔가 당신이 할 수있다 다시 size--로 할 수있는 유용 할 수 있습니다. 얼마나 많은 사람들이 읽고 그런데 PSET 스펙? 확인을 클릭합니다. [들림] 스피커 1 : OK. 좋아. 이 재미 PSET이다 ... 그 얘기도 확실히 읽어보십시오. 당신은 삭제 된 메모리를 복구하는 얻을 작동 할 때 정말 흥분 card--. 그러나 확실히, 그것을 읽기 시작. 나에게 이야기를 와서 당신 경우 그것에 대해 질문이 있습니다. 확인을 위하여 내가 말했듯이, FREAD 바이트의 특정 번호를 판독한다. 즉, 어떤 임의의 수의 당신은 설정하는 거라고. 그리고 바로 이동 fseek의 특정 위치에. 아마 당신은 상관하지 않습니다 다음 10 바이트에 대한. 당신은 그냥 건너 뛰고 싶어요. 당신은 그 걱정하지 않는다. 당신은 바이트 (11)에서 시작하여 읽고 싶어. fseek는 당신이 할 수 있습니다. 그래서 그것은 당신이 선택 할 수 있습니다 당신이 읽고있는 것에 대해. 는 fgetc,는 fgets 및 FREAD 읽기 때문에 파일의 특정 장소에서. 이에 대해 생각하는 방법은이 경우이다 우리의 파일이 먼저 그것을 열 때, 당신은 파일에이 위치를 즉, 처음에 시작합니다. 때마다 전화 는 fgetc, fgetf, 또는 FREAD, 그것부터 시작하는거야 이 위치 마커. 이제 당신이 읽고 싶어한다고 가정 해 봅시다 여기에 메모리의이 덩어리. 당신은 호출 할 수 없습니다. 당신은 여기 추구해야 다음 거기에서 읽기 또는 읽기, 도착, 또는 getc 그룹, 당신이 원하는에 따라. 그러니 당신을 수 있습니다 추​​구 메모리의 일부를 건너 뜁니다. 그리고 그 만의 당신이 일을 건너 뛸 수 있습니다 방법 당신의 버퍼를 읽는하지 않고. 즉 모든 사람에게 의미가 있습니까? 물론, 거기에 병렬 이곳에 많은 우리의 출력 또는 입력 리디렉션, 당신은 읽고 쓸 수있다. 그래서 fputc 단지 기록 파일에 문자. fputs 선을 기록합니다. fprintf와는 형식화 된 출력을 인쇄합니다. 당신이 탭을한다면, 또는 공간, 또는 이것 저것. 그리고 fwrite 같은 몇 가지를 기록 파일 바이트의 배열입니다. 그래서이 같은 방법은 대개 fwrite와 FREAD은 유사하다 opposites--는 fgets, fputs 및 다음 fputc와 fgetc-- 많은 미친, 빠른 것. 그냥 가지이 핸디 ... 계속 당신이 다른 시간을해야합니다 어디 어쩌면 당신이 원하는 한번에 한 문자. 어쩌면 당신은 전체 라인을 원한다. 당신의 사전 pset--으로 이는 두 가지의 Pset에, 나는 우리가 당신에게 전체를 제공, 생각 텍스트 형식으로 사전 있는 모든 단어가 선으로 구분. 당신이 읽고 싶어한다면 한 번에 하나의 단어, 당신이 읽는다면 당신은 무엇을 사용할 수 있습니다 그들은 모두 새로운 라인에 분리하고 당신은 한 번에 하나의 단어를 원하는? 청중 :는 fgets 스피커 1 : 맞아요. Fgets-- 그 반환하기 때문에 무엇이든 한 줄에 있습니다. 그리고 모든 단어는 인 경우 자신의 라인은, 우리는 fgets를 사용할 수 있습니다. 쿨. 그 의미, 모두를합니까? 쿨? 그래, 우리는에받을거야 포인터 재미있는 부분 곧, 어디를 일부 수학을 얻을. 그리고 그것은 잘 될 것입니다. 파일을 닫습니다 step-- 마지막. 여기에 너무 많은 것들과, 우리의 패러다임 중 하나 그것을 반환 할 수있는 경우입니다 NULL, NULL이 있는지 확인합니다. 당신이 뭔가를 열 경우, 당신은 더 나은 닫을 것. 당신이 때까지 OK, 그래서 당신은 안 끝났어 당신이 그것을 폐쇄하지 않았다면 다. 종류의 것이 이상하지 것처럼 뚱뚱한 여자가 노래까지. 그것은 당신의 파일을 닫는 같다. 여기, 말한대로 단지 항상 반복합니다 당신이있어 전에 파일을 엽니 다 읽기 나 쓰기. 당신이 그것을 연 경우 항상 닫습니다. 좋아? 쿨. 그래서 여기에 예입니다. 내가 모르는 tiny-- 있도록하는 경우 사람들은 아주 잘 것을 볼 수 있습니다. 단지 우리가 증가 할 경우, 어떻게 든 밝기. 내가 할 수있는 경우에 저 실제로이 작업을 수행 할 수 있습니다. OK, 너희들이 할 수없는 정말 당신, 그 모든 수를 참조하십시오? OK, 우리는,이 작업을 수행하는 것입니다. [들림] 나는이 볼 훨씬 더 가정합니다. 사람은 어디에서 볼 수 있습니까 문제는 마우스를 갔다입니까? 아, 거기는 투쟁 할 건 ...! 확인을 클릭합니다. 기본적으로, 너희들은 종류가 있어야합니다 어떤이의 아이디어로하고있다. 그것은 완벽 하진. 지출보다하지만 오히려 그것을 설명 할 것 더 많은 시간이 제대로 포맷하려고합니다. 기본적으로, 당신이 여기에서 보는 바와 같이, 우리는 파일 열기 시작합니다. 그리고 우리는 몇 가지가 우리가 데이터베이스 파일 그 열기는 학생들의 말한다. 그리고 우리는 쓸 것입니다. 그래서 물론, null를 돌려줍니다. 그래서 우리는 널 (null)를 확인해야합니다. 그리고 그것은 아니다 다음 경우 null의 경우, 우리는을 통해 이동합니다. 보시다시피, 우리는있어 여기를 반복합니다. 학생들이 있습니다. 학생들은 세 가지로 정의 해시입니다. 그리고 우리가하는 일은 우리가 있습니다 오른쪽 파일로 인쇄? 그래서 우리는 우리의 파일을 밖으로 인쇄? 청중 : 점수 배열에 그인가? 스피커 1 : 그래. 에 점수 정확히 array--. 그래서 우리는이를 열고있다 데이터베이스 파일, 어느 나는 가정은 어떤 종류입니다 등급 데이터베이스. 그리고 우리는 그냥 인쇄하는 해당 파일에 각 학생의 점수. 쿨? 좋은. 신난다. 확인을 클릭합니다. 난 ...을 돌아 보자 청중 : 나는 빠른 질문이 있습니다. 루프의 printf하지에인가? 그건 그냥 경우 루프에서입니까? 스피커 1 : 아니, 루프에 있습니다. 여기까지 잘 내 마우스를 볼 수 없습니다. 그래서 난에 어려움을 겪고있어 제대로 형식이. 이 브래킷은 사라해야합니다. 여기 아래 있어야한다. 이 루프에 대한 귀하의 무엇이다. 가. 지금은 꽤 있습니다. 그래서 그것을 제외하고는 나중에 ... 방법이다 내가 기각 마지막 브라켓. 확인을 클릭합니다. 즉 모든 사람에게 의미가 있습니까? 확인을 클릭합니다. 우리는 이동거야 다음 일에 그러고 나서 ... 이는 실제로, 당신은거야 코드를 볼 필요가 있습니다. 그래서 난 그냥 갈거야 그 이상 지금 복사합니다. 확인을 클릭합니다. 그래서이 코드 너희들을 보여 드리겠습니다. 그리고 나는 당신이 시도하고도 할 이 해야하는 무엇을 할 수 있습니다. 그래서 분 정도 걸릴 ... 그 얘기 주어진. 시도하고 여기에 무슨 일이 일어나고 있는지 알아. 어떤 아이디어? 우리는 우리가 가지고 있다는 것을 알고 적어도 두 명령 줄에서 인수, 맞죠? 나는 중 하나가 될 것입니다 가정 그 [들리지] 우리의 프로그램은의 다음 뭔가. [들리지]가 작은 경우 때문에 두보다, 우리는 그들을 소리. 오른쪽? 그리고 사용에서, 그것은처럼 보이는 이 파일의 일종이 될 것. 우리 모두는 동의? 그래서 지금,하고있는 루프는 무엇인가? 그것은 무엇을 통해 일이야? 청중 : 모든 파일. 스피커 1 : 맞아요. 그것은을 통해거야 모든 우리가 거​​기에 입력을했습니다 파일. 그래서 각 파일에 대해, 이건 몇 가지 문자열을 열어. 그것은 그 파일을 여는. 오른쪽? 그리고 읽으입니다. null가 있다면 물론, 검사합니다. 그리고 그것은 인쇄입니다. 이 널 (null)의 경우, 그것은 단지 우리를 말하고 것을 그 존재하는 파일은 아니다. 와, 기억 때문에 우리의 파일이 존재합니다 읽어 보시기 바랍니다. 오른쪽? 쓰기 및 APPEND와, 당신은 멀리 얻을 수 있습니다. 그러나 읽기에, 우리의 파일이 존재합니다. 그리고, 파일이 존재하는 경우, 우리는 여기서 뭐하는거야? 그냥 여기에서 시작하자. 이것이 것은이 첫 번째 문자를 싫어합니다. 그것은 무엇을합니까? 그는 바로, 하나의 문자를 가져옵니다? 그래서이는거야? 그것은 첫 번째 문자를 점점. 사람은 EOF를 알아? 청중 : 파일의 끝? 스피커 1 : 정확하게 file--의 끝. 그래서 통해 갈 것 전체 파일, 맞죠? 그리고, 그것은으로 업데이트 할거야 이후의 모든 문자를 받고. 오른쪽? 그리고 그것은 뭐하는거야? 청중 : 그 퍼팅은 말야 ... 스피커 1 : Putchar 인쇄 화면 보호기에. [들림] 문자. 그리고 때 [들림] 이 파일을 닫습니다. 청중 : 당신이하지 [가 필요합니까? 다른? ?] 스피커 1 : 꼭 그렇지는 않습니다. 나는이 종류의이 암시있어, 의미한다. 이 긴으로하지만, 반환하기 때문에 문제는이를 잡으려고하지 않는 한, 당신은 괜찮아요. 나는 그것이 아마 좋은 뜻 다른 작업을 수행 연습. 그러나 다른 사람은 항상하지 않습니다 필요한 특히 당신이 뭔가가있는 경우 반품 좋아하는 어떤 이 경우에는이 잡으면 것을 의미한다 그것은, 프로그램이 끝날 것 그리고이 도착하지 못할거야. 그것은 당신이하고있는 경우에 더 많은 것은 인 반드시 뭔가를 반환하지 않습니다. 이 아니었다면 때문에 아무것도 반환 그것은,이 사실이라면 것을 의미한다 이 나머지는 여전히 실행할 것이다. 그리고이 경우, 거짓을 할 것입니다. 이 반환 있다면, 그리고 프로그램의 종료, 다른 모든 필요가 없습니다 시간, 상황에 따라. 야곱, 당신은 질문이나요? 청중 : 네. 그래서 다음 문자를 얻을 수는 fgetc합니까? 문자는 어떻게 증가 하는가? 스피커 1 : 그래. 그래서는 fgetc는 다음 문자를 가져옵니다. 당신은 어떤 의미에서 C ++처럼 생각할 수 있습니다. 청중 : EOF 무엇 그래서인가? 스피커 1 : EOF는 파일의 끝입니다. 그냥 알 수 있습니다 마커의 당신은 당신의 파일의 마지막에 걸. 그래서이 인쇄 할 것입니다 당신의 표준 출력에. 그리고 다음 닫습니다 것 당신이 일을 끝낼 파일. 그리고 이제 가자 다음 파일을 마우스 오른쪽? 그래서 전반적으로,이 프로그램은 무엇입니까? [들림] 스피커 1 : 그래. 그냥 거기에 모든 것을 출력합니다. 너희들이 이제까지 사용한 경우 CAT 그래서 일부 file--의 다음 이름 당신의 어떤이있는 경우 나도 몰라 지금까지 터미널에 그 일을. 그러나 당신이 이제까지을 사용하는 경우 명령 CAT-- C-A-T-- 다음 어떤 파일 당신은 그것을 저기있다 터미널에 그것을 밖으로 인쇄합니다 몇 가지 슈퍼 편리 할 수​​ 있습니다. 나는 그것을 많이 사용합니다. 즉 모든 사람에게 의미가 있습니까? 쿨? OK 그래서 당신의 작업에 의해 하나 지금은 - 자신이나 당신 ... 주위 사람들과 그냥 간단한 프로그램을 작성하는 것입니다 그건 그냥 "Hello, world!"를 작성합니다 파일에 연결할 수 있습니다. [들림] [들림] 스피커 1 :처럼 나는이었다 나는 심하게 지난주합니까? 나는 그것이 그렇게 나쁜 생각하지 않았다. 난 당신이 모두 여기에있어 기쁘다. 정말 나를 행복하게. 나는 단순한 즐거움의 여자예요. 내 섹션이 참석 때 그냥 좋아. 그래서 난 그냥이 시작하기를 해요 너희들은 우리가 함께 코딩 할 수 있도록. 나는에 사람을 넣어 싫어 그 자리는 당신이되고 싶어하지 않는 한. 청중 : 퀴즈, 할 우리는 프로그램을 작성해야? 스피커 1 : 당신이해야 할 수도 있습니다 손으로 간단한 프로그램을 작성. 아, 그래. 청중 : 퀴즈, 바로 다음 주입니까? 스피커 1 : 퀴즈가 다음 주 수요일입니다. 즉 사랑스러운 [있다는 뜻인가? CSE?] 나중에, 파티 등급하는 당신은 당신의 점수를 얻을 것이다 의미 다시 무엇을 한 번에 걸어 보면 그? 누가 알 겠어요? 그러나 그 밤이 될 것입니다. 좋아. 우리는 어떻게이 시작 하시겠습니까? 당신이 가진 hint-- 시작을 줄 것이다. 청중 : 당신이 파일을 열 수 있습니다. 스피커 1 : 그래. 그래서 당신이 전화하고 싶어? 당신은 "파일"을 호출 하시겠습니까? 의는 쉽게 만들어 보자. 그래서 무엇 fopen-- 우리 될 것 출력 테스트? "안녕하세요."라고 전화 그리고 우리의 모드는 무엇인가? 우리는이 파일에 뭐하는거야? 청중 : 읽기. 쓰기. 스피커 1 : 우리는 그것을 쓰고있어. 사랑스러운. OK, 그래서 우리는 지금이 파일이 있습니다. 우리는 무엇을해야합니까? 청중 :이 널 (null)인지 확인합니다. 스피커 1 : 정확히 null--인지 확인합니다. 즉, 내가 듣고 싶은거야. 즉 특히, 자동으로해야한다 이 시점에서 꽤 많이. 당신은 segfaulting을, 당신 아마 시작하는 경우 어딘가에 널 (null)을 확인하지 않았다. 10 명 중 아홉, 그건 당신의 오류가 될 것이다. 당신이 얻을 수 있다면 그래서 이 널 (null)의 경우 습관, 항상 확인 당신의 인생이 될 것 좋은 easy-- 또는 쉽게. 그래서 널 (null)인지 확인합니다. 이 널 (null)이 아니라면, 어느 그래서 강타는 동일 무엇인가 의미 하든지 ..이 유효의 null-- 없습니다. 우리는 무엇을 하시겠습니까? 우리는 인쇄 할 해당 파일을 마우스 오른쪽? 그래서 우리가 사용하는 건가요? 청중 : fprintf와 스피커 1 : Fprintf-- 사랑. 그리고 fprintf와 두 arguments-- 곳 소요 그것은 가서 우리가 인쇄 할 것. 그래서 첫 번째는 무엇인가? 어디거야? 청중 : 파일. 스피커 1 : 그것은 파일거야. 그리고 우리는 인쇄 무엇을 원하는가? "안녕하세요, 세계!" 좋아. 우리는 마지막으로 건 말인데 ...이 여기에 또 다른 큰 패러다임. 청중 : 닫기. 스피커 1 : 닫기. 거기 당신은 간다. 청중 :이 일어나고있다 파일이 null의 경우는? 스피커 1 : null가 아니라면 아니,이입니다. 청중 : 아, 경우는 아직 ... 괜찮아요. 다음 FOPEN 및 들어 안으로 들어가 두 개의 인수, 첫 번째 인수는 다시 무엇을 의미 하는가? 스피커 1 : 인수가 단지 파일 이름 등 당신이 가고 싶은 것을. 이 실행 된 후 그래서, 당신은 것 "안녕하세요"라는 일부 파일이 그게 내에서 "안녕하세요, 세계를"했다. 그게 다야. 그냥 이름입니다. 청중 : 그리고 그것은 이후 쓰고, 파일이 이미 존재하지 않습니다. 당신이 말한거야? 스피커 1 : 맞아요. 정확히. "안녕하세요"파일로하는 경우 아직 존재하지 않는, 그건 라는 파일을 작성하려고 안녕하세요 "하고 당신을 위해 쓸. 청중 : 당신이 말하는 것 이 프로그램은 파일을 작성합니다 왜 쓰기 "파일"대신 않는다 파일 및 fprintf--의 이름 SPEAKER 1 :이 경우에, 우리가 있기 때문에 모든 caps-- 스타 그 큰 FILE--, 파일. 그래서 파일에 대한 포인터이다 것을 얘기하고 있습니다. 이 방법입니다 우리는 단지 그것을 참조하십시오. 이 경우 그래서, file-- 아하 생각할 수 있습니다, 우리는 여기에 이​​런것 파일을 사용할 수 있습니다 "안녕하세요"의 개방을 의미 그것은 쓰기시키는. 청중 : 우리는 "안녕하세요"넣을 수 대신 [? 단지?] F 파일? 스피커 1 : 아니, 때문에 "안녕하세요" 개방 및 쓰기 가능합니다. 여기에 파일은 같다 OK 말한다 지정자, 우리 이 file-- hello--이 우리가보고있는 그. 이 개설되었습니다. 그리고 우리는 쓸 것입니다. 당신은 그냥 "안녕하세요"를 사용하는 경우, 즉, 캡슐화된다. 그래서 흥분하는 것입니다. 나는 당신이 그것을 이름 수도, 의미한다. 당신은 파일을 할 수 있었다 별은, "안녕하세요", 그와 같습니다. 그러나 요점은 당신 것입니다 위해 파일 스타 포인터를 필요 이러한 기능을 사용할 수 있습니다. 청중 : 당신은 할 수 있나요 파일, 스타, 파일, "안녕하세요" 또는 당신은 넣어해야합니까 그것에 의해, 파일을 스타 파일? 스피커 1 : 수 "안녕하세요.", 파일, 별을 당신은이를 변경할 수 있습니다 어떤 이름을 당신이 원하는. 그것은 완전히 임의의 그 이름은 무엇인지. 당신은 아무것도 이름을 지정할 수 있습니다. 당신이 원하는 경우, 스파게티 비행 이름을 지정합니다. 청중 : 시세에서 "W"무엇​​입니까? 스피커 1 : "W"는 단지 모드입니다. 그래서 우리는이 파일에 기록하고 있습니다. 모두 좋은? 지우기? 예. 청중 :이 씁니다 그래서 여기서 우리는 다음 해당 파일을 찾을 수 있습니까, 파일? 스피커 1 : 그것은 동일한에있을거야 현재에있어 디렉토리. 당신이 PSET 세에 있다면 및 당신은 당신의 pset 내에서이 작업을 실행 세 개의 폴더가 될 것입니다 라는이 파일에 "Hello." 쿨? 모두 좋은? 모든 것 같은 느낌 좋은 인을 받고. 확인을 클릭합니다. 그래서 다시 내 슬라이드 방송 ...에 사물이 작동 할 때 나는 사랑한다. OK, 너희들은 흥분 pointers-- 있습니까? 포인터는 중대하다. 그들은 조금을 당신의 머리를 줄 바꿈합니다. 이것은 2 학년입니다 교육 포인터. 그리고 나는 마침내 그것을 거 같아요. 당신이 투쟁한다면, 그것은 괜찮습니다. 내가 전에 말했듯이, 그림 그리기 , CS에있는 것들로 많은 도움이 많이 나는 사람들이 생각하는 경향이있다 오, 우리가 컴퓨터라고 생각합니다. 우리는 코드를해야합니다. 없어, 도면 사진 정말 도움이 될 것입니다. 그리고 정말하는 것이 좋습니다 당신의 유치원생 측면을 활용 크레용을 가지고 또는 마커와 무승부. 그것은 당신을 도울 것입니다 때문에. 그리고 당신은 근무 시간에 나를 보면, I 종이의 스택 주위에 실시됩니다 펜 물건을 그리기. 그래서 특히와 그림을 그릴 pointers--. 그리고 나는 우리가 실제로 할꺼 너무 여기에 몇 가지 그림을 그리기합니다. 그래서 너희들은 모두 빙키를 볼 수있어 이 멋진 클레이 메이션 것. 그리고 우리는 그 때 정말 재미 있다고 생각 그는 조각의 무리에 폭발. 이 클래스의 일부 희극이다. C [들림]이 위대한 능력 메모리를 제어 할 수 있어야한다. 그리고는 정말 것들 중 하나입니다 그것과 같은 강력한 언어를합니다. 그러나 큰 힘이 온다 큰 책임. 그리고 미친 일들이 일어날 수있다 당신이 조심하지 않으면. 그래서 만약 당신이 사용하는 경우 포인터, 당신은 만들고 싶어 확실히 당신은 정말 이해 정확히 무슨 일을하는지. 잘하면 다음 조금 시간은 당신이 정말로 이해하는 데 도움이됩니다 포인터는, 사용 방법, 그들을 조작하는 방법. 그래서 우리가했습니다 확신 memory-- 전이 그림을 본. 그래서이의 단순한이다 어떻게 일이 메모리에 저장 될 수 있습니다. 그래서 당신은 기본적으로 이러한이 하나의 바이트 블록 거대한 배열 우리가 이곳에 약간의가 무엇인가 한마다 씩 증가. 이 16 진수에 [들림] 그래서 8 비트 블록. 모든 블록이 연결되어 있습니다 일부 진수 주소. 당신이 이제까지 볼 경우에 따라서 0x로, 그것은 단지 기호 인 것 그것은 16 진수 주소 있다는. 이 의미 가정 할 수 있습니다 메모리의 어떤 주소. 우리는 메모리 주소에 대해 얘기하고 때마다 16 진수를 참조하십시오. 우리는 정수가 변수가, 수레를 저장하는 변수입니다. 정수 저장 정수 그래서. 수레 저장소 수레. 그래서 우리는 또한 포인터가 를 저장하는 메모리 주소. 즉 매핑의 일종. 포인터는 독점적 있습니다 메모리 주소. 그래서이 유형에 같아요. 어플라이언스는 32 비트, 어떤 의미입니다 메모리 주소는 4 바이트임을. 그래서 당신이 어떤 포인터 또한 4 바이트가 될 것입니다. 아니면이 4 바이트의 다른 경우, 메모리는 4 바이트입니다. 포인터의 메모리 저장. 따라서, 그들은 4 바이트를하고 있습니다. Cool-- 그냥를 강화하려고합니다. 이제이 만화를 얻어야한다. 당신의 얼마나 많은 몰라 XKCD 팬,하지만 난 XKCD을 사랑 해요. 그것은 좋아요. 좋아. 내가 말했듯이 그래서 그것의, pointers-- 만들기 꽤 많은 단지 다른 것을 좋아한다. 당신은 유형을했습니다. 당신은 이름을 가지고있다. 오른쪽? 그것은 우리가 무엇을합니다. [? 진수는?] 별은,이 포인터의 의미 다음은 전화를 원하는대로. 그래서 타입 나타내고 당신은 무엇을 저장할 수있는 것. 좋아? 같은 방식으로 우리가 INT를 할 경우, 우리는 우리가 int를 저장하는 거 알아. 포인터, 그것을 메모리 주소를 가지고있다. 그러나 무엇을 의미하는 것은 여기 어디 거저입니다 도면은 편리 할 것입니다. 따라서이 경우에, 우리가 일부의 네 말을하자 value--. 네 개의 주소 중 하나에 있습니다. OK? 이 첫 번째는 여기에 의미 그것은 포인터 배 있다고. 오른쪽? 그것은 몇 가지 포인터 X입니다. X는 무엇을 뭔가 할 수있다. 무엇이든 X X 네라고는 .... 그것은을 저장하는 것 여기에 메모리 주소. 그래서 INT, 스타, x--이입니다 memory--에서 다른 슬롯 사람이 무엇인지 알고있다. 그러나 여기에 주소를 저장하는 것입니다. 그래서 이쪽은 다 맡을 것 이 경우에, 무엇이든간에, 저장되어있는 어떤 0x1--에 저장된다 우리의 포인터가 보유하고있는 주소, 와 일치한다 우리는 지정했습니다. 그래서이 0x1에서,이 경우, 이는 X이다. 이것은 오직이 될 수 있습니다 우리는이를 사용하는 동안 int로. 마찬가지로, 우리가있는 경우 다른 1Y, 어떤 y를 가지고 함께 어드레스가 저장된다 Z와 char-- 같은 일이 될 수 있습니다. 동일한 방식으로, 항상 널 시도하고 INTX 0.4에 해당 할, 그것은 당신을 소리 할 것 아니 같은, 당신은 당신이 INT를 원했다. 이것은 INT 가정된다. 그것은 플로트 만들려고 중지합니다. 그래서 일이 그들이 원하는 것을 할 수 있습니다. 일이 자신을하자. 그래서 큰 것은 그냥 포인터의 유형에 관계없이 그것은 즉, 만이다,입니다 당신이 저장할 수있는 것. OK? 연습과 마찬가지로 지난 주, 모든 정말 종류의 추상적 인 것 같다. 우리는 연습을 할 것입니다. 그것은 더 이해를해야합니다. 그래서 참조 및 그것의 dereferencing-- 정말 중요한 것은 이러한 직선을 얻을 수 있습니다. 나는 아직도 새로 고쳐야 할 모든 이제 다음. 그리고 나는 내가하는 일을 원하는가, 대기처럼 해요? 그래서 앰퍼샌드 실제로 줄 것이다 당신의 참조 또는 주소. 그래서 주소를 반환 변수의 메모리에 저장됩니다. 그래서 실제로로 돌아 것 16 진수를 역 참조하는 반면 실제로 당신에게 줄 수 있겠나 거기에 저장되어있는 데이터. OK? 그래서 우리는 예를 살펴거야 정말 빨리, 또는 실제로 위 다음. 확인을 클릭합니다. 그래서 우리가 정말 생각해야 이에 대해 신중하게. 그래서 여기에 우리는 몇 가지 정수 X가 있습니다. 나는 시도하고이를 그릴거야 내 능력의 최선을 밖으로. 그래서 우리는이 슬롯 X가 될 것입니다. 그리고 다섯을 저장합니다. 그 주소는 0x4로입니다. 쿨? 모든 좋은. 그래서 지금 우리는이 포인터를 가지고있다. 그것은 여기에 있었다. 그리고 앰퍼샌드는 우리를 제공합니다 뭔가의 주소. 그래서,이 경우에는, x의 주소이다. x의 주소는 무엇입니까? 04--이 포인터는 0x08에 있습니다. 쿨? 그래서 당신은 이것에 대해 생각할 수 포인터, 04, 그냥 여기를 가리키는. 그리고 그들은 포인터를 호출하고 우리는이에 더 많은 것을 알고으로 인해, 당신은 사물을 가리키는 보게 될 것입니다. 그리고 하나의 블록은 다른 가리키는 블록은 더 많은 감각을 만들 것입니다. 그래서 여기에 두 가지이다. 그리고 우리는 몇 가지가 뭐 ... 0x0c입니다 복사. 그리고 그것은 갈 것 우리의 포인터 역 참조. 그래서이 말하는 것은입니다 OK, 여기에 우리의 포인터입니다. 이 저장 값은 무엇을하는 0x04이며, 그것은이 주소로 이동 같다고 말하는거야 그 안에 무엇을 말해. 그래서 효율적이다 이 화살표는 무엇을하고있다. 당신은 스타처럼 생각할 수 있습니다. 우리가 별을 수행 할 때 그래서 OK, 그것은 다음을 의미합니다. 이 주소로 이동합니다. 그리고는 기본적으로 다음의 이 메모리 덩어리에이 화살표. 그리고 5 인, 그 안에 무엇이 우리를 제공합니다. 우리의 사본이 5와 동일한 이유입니다. 그 의미가 있습니까? 사람이 통과 할 날 필요로 하는가 그 다시, 또는 더 느리게? 날이 가고 싶은 그것을 한 번 더를 통해? 확인을 클릭합니다. 우리는 다시 다시 그릴 것입니다. 우리가 시작할 때, 우리 모두는 우리가 동의 변수의 메모리의 일부 덩어리 우리는 5와 동일하게 설정 X. 이 메모리의 어디에 우리는 제어하지 않습니다. 그래서이 자리는 그냥 임의로 할당. 이 좋은? 확인을 클릭합니다. 그런 다음 우리는 INT에 대한 포인터를 초기화합니다. 즉,이 가리 키도록 허용 왜이다 X 우리가 여기에 int를 가지고 있기 때문에. 우리는 또 다른 덩어리가 메모리 때문에이 포인터 단지 다른 것을 같은 변수입니다. 그것은 임의로 할당 된 것 메모리의 일부 공간. 그리고 그것이 무엇 저장하는 x의 주소입니다. 앰퍼샌드는 x의 주소를 의미한다. 그래서 x의 주소는 무엇인가? 청중 : 그것은 zero--의 스피커 1 :를 0x04. 그래서에요 다음 마지막. 우리는 다시 몇 가지 copy--이 또 다른 변수입니다. 그럼 어떤 임의의 장소를 지정할 수 있습니다. 우리의 포인터 역 참조 그리고 우리. 스타로 이동을 의미 주소 내 포인터에 저장된다. 거기에 무엇을 말해. 그래서 주소를 저장 우리의 포인터를 0x04입니다. 그래서 우리는 그 주소로 이동합니다. 그것은 그 주소를 가리키는 것. 이 메모리 블록 내부에 무엇입니까? 그것은 다섯입니다. 그래서 우리는 우리의 사본을 할당 할거야. 모두 좋은? 쿨. Again-- 사진. 그래서 난 이곳에 값을 추적 너희들이 생각 할 것. 우리는 또 다른 그림을 그릴 수 있습니다. 그러나 나는 당신이 시도하고 이유하려면 잠시 자신에이를 통해. 그들은 포기하지 않았기 때문에 우리 예 주소 난 그냥 앰퍼샌드 x--을 할거야 어느 집으로 운전 도움이 될 것입니다. 앰퍼샌드 주소를 의미한다. 첫 번째, 사람에 따라서 첫 번째 줄과 함께 할 것입니다. 일부 X 세트의 five-- 일부 메모리에 임의의 슬롯. INT 스타 포인터는 동일 x의 주소, 맞죠? INT 스타 포인터가 생성 이 블록은, 그 포인터 호출 와 x의 주소에 할당합니다. 나는 앰퍼샌드 끔찍 해요. 지금 우리가하고있는 것은 말할 것입니다 OK, 우리의 포인터 역 참조. 그래서 우리는 OK, 우리의 포인터에 무엇을 이동? 그것은 앰퍼샌드 X입니다. 앰퍼샌드 X로 이동하고 재 할당. 그래서 지금, 앰퍼샌드 x는 35가 될 것입니다. 그러니까 기본적으로, 당신은 때이야 역 참조, 확인을 이동합니다. 당신은 그리기 될거야 이 같은 사진. 당신은 그리기 될거야 어디를 통해 화살. 그래서 메모리에이 슬롯으로 이동 중 나에게 그 값을 돌려주고, 또는 변경. 이 경우, 때문에 우리는이에있어 , 우리가 그것을 할당하고 값은 35이어야합니다. 마지막에있는 반면 하나, 당신이 나는 경우, 우리 무엇 할당 된 여기에 다른 뭔가에. 그래서 그들은이 멋진 테이블이 있습니다. 그것은 나쁘지 않다. 너희들은 그것을 작동합니다. 나는 칠판에 끌어거야. 우리는 OK, 그것을 함께 작성하는 건가요? 그래서 일부 종이, 잡아 잡아 파트너는 작업을 시작. 내가 얻을거야 분필의 큰 조각. 이 많이 될 것 때문에. 확인을 클릭합니다. 교수 : OK. 의 첫 번째 행부터 시작하자. 우리는 그 다음이 너희들을 시작합니다 어쩌면 좀 더를 통해 작업 할 수 있습니다. 확인을 클릭합니다. 는 무엇 그래서 B 시간의 C에 해당? 그것은 트릭 질문이 아니다, 약속. 학생 : 4 ~ 5 배. 교수 : 4 ~ 5 배. 20. 그래서 B는 무엇인가? 학생 : 네. 교수 : 그리고 C? 학생 : 5. 교수 : 5. 그리고 이것은 단지 것입니다 , 앰퍼샌드 (B)을 앰퍼샌드 (&) 수, 앰퍼샌드 C, 맞죠? 나쁜. 그것은 충분히 간단합니다. 확인을 클릭합니다. 다음 중 하나 그래서. 이 경우, 배 C와 동일 사람은 익숙했다. 익숙한 사람입니다 시간이 equals와? OK,이 모든이가 의미 하든지 .. 속기는 배 C와 동일합니다. 또한 사업부와 함께 할 수 있습니다, 뺄셈과 덧셈,와. 당신은 같음을 수행 할 수 있습니다, 또는 플러스는 C와 동일 이 플러스 C, 동일한 마이너스 동일 의미 c를 마이너스 C와 동일하다. 그냥 문법 설탕입니다. 그래서,이 경우는 동일하다 배 C 우리에게 뭐가 있죠? 또 다시, 아니 트릭 질문입니다. 학생 : 100. 교수 : 100. 아무것도 변경합니까? 아니오. 어쩌면 내가 마지막으로 얻을 것이다 내 앰퍼샌드 더 나은. 학생 : 오, 미안, 어떻게 (100)를 얻었 는가? 교수 : OK. 그래서이 같은지 배 C, 그렇게 번 C. 학생 : 오, 당신이 사용하고있는 previous--에 대한 교수 : 네. 그래서 이러한 우리의 가장 최근의 값입니다. 이들은 당신이해야 무엇인가 우리가 아래로 이동 확인, 사용. 그래서 B는 유일한 것은 변화, 오른쪽인가? 그럼 다른 모든 기입 할 수 있습니다. B. 무엇 B가 될 것입니다? 수 또는되지 않게합니다. 그래서이는거야? PA 일 별은 무엇입니까? 학생 : PA의 위치에 코드입니다. 학생 : 아니, 아주. 그래서이 D 참조입니다. 학생 : 그래서 B는 PA의 손으로 값입니다. 교수 : 그래, 그래서 아빠가 의 주소, 맞죠? 그래서이 곳으로 이동을 말하는 것 저장하고 그것을 그 값을 제공합니다. 그래서 B는 무엇인가? 학생 : 100. 교수 : 100. 완벽한. 좋아, 그럼 PC 란 무엇을 변하고있다. 나머지는 동일하게 유지. 어떤 PC가 될 것입니다? 간단한 할당. PC에 PA 같고, PA는 무엇인가? 학생 :을 앰퍼샌드. 교수 : 완벽한. 이제 우리는 재미 있어요. 좋아, 다운이 하나를 중단 할 수 있습니다. 그 때문에 첫째, 무슨 일이, B 곱하기 C를의 이 하나의 쉬운 부분, 오른쪽? B 시간 C는 ... 학생 : 500. 교수 : 그래, 그래서 이 사람은 무엇을하고, 그것의 스타 PB 경우, 무엇을 변경하는거야? 학생 : 무슨 엥에서의 교수 : B의​​ 무엇입니까? 학생 : 공간의 새로운 기능 그 (PB)은 가리키고 있습니다. 교수 : 그리고 (PB)은 아 - 가리키는 학생 : B. 교수 : B. 따라서 만 일의 변화는 바로 B입니다. 그래서 B 번 C, 500. 그래서 지금 어떤 변화입니다. 쿨. 사랑스러운. 지금까지 정말 잘하고있다. 이 하나 다운을 깨는 좋아. C는 오른쪽 변화? 그래서 우리는 다른 모든 입력 할 수 있습니다. 어디 보자. 확인을 클릭합니다. 우리는 C가 될 것입니다 알고 두 숫자의 제품,? 어떤 두 수,하지만? 학생 : A와 C? 교수 : 그래서는 오른쪽 첫 번째합니다. 그럼 우리의 페이지를 참조 거라고거야? 에 대한 점 P, 그래서 우리는 알고 이 100 회 무엇 될 것입니다? 에 PC 점을 무엇 타임즈? 를 가리 킵니다. 그래서 100 배 (100)은 10,000이다. 그 의미가 있습니까? 쿨. 홈 스트레치, 사람, 마지막 행. 확인을 클릭합니다. 여기에 무엇을 변경하는거야? 학생 : A. 교수 : A. 완벽한, 그래서 나머지는 동일하게 유지 할 수 있습니다. 확인을 클릭합니다. 그리고는 무엇인가? 그래서 시간이 무엇입니까? 이 스타 PB입니다. 그래서 스타 PB는 여기에 의미 PB, PB 지점은 B로. 학생 : 500. 교수 : 500. 그래서 우리는 500 배 (100)이있다. 즉 50,000입니다. 휴! 저것 좀 봐. 학생 : 왜 우리가해야합니까 last--의 & C 교수 : 죄송합니다. 학생 : 아, 그렇군요. 교수 : 내 나쁜. 쓰기 많아요. 모두 좋은? 너무 나쁜, 맞죠? 그냥 약간의 소요 반면 통해 작동합니다. 당신이 그것을 무너 뜨리는 경우, 무엇 각 부분을 이해 같은 인명 피해가 없는지 ... 언급하고 그것의 모든과, 작은으로 분해 그럼요 다음 재결합 문제, 당신은 굉장한 물건을 할 수 있습니다. 거기에 대한 답변입니다,하지만 우리는 그것을했다. 포인터 연산. 아. 내 손이 모든 백악질 있습니다. 그래서 추가하거나 빼는 INT 포인터를 조정 포인터의 종류의 크기에 의하여. 어떻게 모든 종류의 기억 다른 크기는? 이중 또는 긴 긴 같은 여덟 INT는 4입니다하지만 문자는 하나입니다. 그래서 당신이 원하는 무엇을 한가지 기억해야 할 것은 핵폭탄 낙하 얼마나 당신을 그렇게 많이 포인터 값은 실제로 변경 에 따라 달라집니다 포인터 유형은이다. 이 좋은 모든 사람? 나는 그것을 지울 수 있습니까? 우리는 좋은거야? 신난다. 우리는 약간의 포인터 그래서 만약 이 가고 ... 그 얘기도 난 나중에 ...하는 그것은 INT 포인터를 만들려고. 그것은이를 저장합니다. 당신은 포인터를 말한다면 더하기 하나, 그것은 할 무슨 이 업데이트 할 건 INT의 크기에 의해 그 그 때문에 포인터 유형은이다. C로, 모든입니다 매우 엄격하고 규제. INT 포인터로 업데이트 할 것입니다 INT이 걸릴 것이다 공간의 양. INT는 4 바이트입니다. 그래서이로 변신 것인가? 당신은이 상 사를 추가하는 것입니다. 이제 포인터가 확인 나중에 ... 것이다. 경우에 따라서는 문자이고 우리는 포인터를했다 더하기 하나는, 지금 무엇을 할 것인가? 그것은 우리를 척 started-- 경우 그것은을 0x08의 지금 started--. 의 지금이이었다한다고 가정 해 봅시다 포인터를 CHAR, 우리는 하나를 추가했다. 그것은 무엇을 할 수 바꿀 것? 문자는 몇 바이트인가? 대상 : 하나. 스피커 1 : 하나. 청중 : 그래서은 0x09. 스피커 1 : 그래서 아홉이 될 것이다. 그래서 뭔가 기억합니다. 하나를 추가 할 바로 ​​그 때, 그것은 아니다 이 문자가 아니면 하나를 추가. 그것은 얼마나 많은 추가하는 것 그것은 인 타입 바이트 이는 우리가 왜 여기까지이 방정식. 그래서 그것의 INT 배 크기 포인터의 타입. 그래서 우리는 여기에 예제가있다. Y는, 그 값을 0x4에 할당 우리는 y를했다 더하기 하나에 해당하는 경우. 무엇에있어, 무엇이다 X에서, 변경되지 않습니다. 어떤 변화를 수행하는 것은 Y에 무엇이입니다. Y에 저장된 주소는 4로 업데이트 4 바이트는 INT에 있기 때문에 그것은 INT 포인터입니다. 좋아. 그래서 지금 우리는 또 다른 운동을해야합니다. 그래서 질문은 인쇄 할 것입니다. 어떤 아이디어? 청중 :의 수 행복 고양이의 문자? 스피커 1 : 맞아요. 그래서 문자열처럼. 모든 사람이 그를 얻을 수 있습니까? 우리는 그것을 통해 걸어 하시겠습니까? OK, 예. 그래서 우리는 내가 이곳에 무슨 훨씬 더이있다. 나는 필요 없어 [들림] 무지. 그래서 우리는 여기에 우리의 문자열, 행복 고양이가있다. 사랑스러운. 우리는 일부 카운터가 그 우리는을 추적하고 있습니다. 그래서 우리는 몇 가지의 char * 포인터를 가지고 그 단지 str에 같게 설정된다. 이것이하는 일은 그것의이다 일부 포인터를 할당 당신의 문자열의 시작 부분에. 내가 확신하기 때문에, 같은 강의에서 언급되었다, 우리는 너희들을 준 문자열라는 데이터 유형입니다. 하지만 실제로는 문자열은있다 배열은 * CHAR처럼 어디의. 그것은 문자의 무리에 대한 포인터이다 메모리에서 연속됩니다. 그래서 그냥 설정 임의의 문자열과 동일입니다 경우에 의해 확인 그것의 첫 번째 문자입니다. 그래서 이것은 단지 어느 시점을 설정하는 것입니다 문자열의 시작과 동일. 모두가 좋은? 쿨. 그래서 이것은 우리의 포인터를 역 참조입니다. 그래서 실제로에 무슨 여기에서 우리에게 어떤 가치를 부여, 우리의 문자열에 우리에 대해 얘기하고있다. 그리고 우리는만큼 말을하는지 이 널 (NULL) 종료 아니다. 그래서 당신이 얻을 때까지 계속 문자열의 끝. 하나 포인터를 업데이트합니다. 그래서 R, 실제로 하나에 의해 업데이트됩니다 마다이 문자이기 때문에, 숯불 *. 그래서 통과하는 것입니다. 그것은 업데이트 할 것입니다. 이 실행 처음 그래서, 이 시간에 여기에있을거야. 그것은 업데이트 할 것입니다. 그것은 수있을 것입니다. 그것은 등등 등등 P, Y, 그리고 것입니다. 우리는 카운터를 업데이트합니다. 그 끝에 도달하면 그것을 그냥이라도 얼마나 인쇄합니다. 예. 청중 : 그것은 카운트 그래서 바로 하나의 공간,? 확인을 클릭합니다. 스피커 1 : 그렇게 생각 해요. question--인가요 청중 : [들리지]. 스피커 1 : 걱정 마. 이 난 그렇게. 좋아요, 한 가지 내가 이해할 수있는 배열이, 또한로 처리 할 수​​ 있습니다 포인터 배열은 단지이기 때문에 메모리의 연속 명소. 그래서 당신은 그것을 같은 방식으로 처리 할 수​​ 있습니다. 당신이 그들을 조작 할 수 있습니다 포인터, 너무. 그래서 그 대신이에, 일 경우, 유사한 것 것 배열 0 1 같습니다. 하지만, 같은 방법으로 그 문자열이 결정된다 의 시작으로 그것의 첫 번째 문자이며, 배열에 의해 결정된다 여기서 첫 번째 원소이다. 우리가 알고 있기 때문에, 우리는있어 보장, 이들 연속거야 메모리 블록. 즉 우리가이 작업을 수행 할 수 있습니다 무엇. 우리는 그들이 계속 거 알아 메모리 블록. 이 경우에 따라서, 역 참조하여 우리에게 단지 배열, OK의 시작으로 이동 여기에 당신의 배열입니다. 그래서 당신은 하나가 동일하게 설정 할 수 있습니다. 이 경우, 어떤 배열 당신이 하나를 업데이트 할 때 유형,이다 그건 그냥 업데이트처럼 그 다음 인덱스. 당신은 할 수 있습니다 당신 때문에 배열에 무엇을 알고있다. 그래서 얼마에 알고 포인터를하여 업데이트 그 정도에 업데이트하는 것을 주소 당신은 다음 슬롯에 걸. 그래서 그냥 다른 방법입니다 배열 0 1에 해당 쓰고, 어레이 (1)는이 어레이 같음 브라켓 2는 3과 같다. 그것은 그것에 대해 생각하는 또 다른 방법입니다. 그들은 연속이기 때문에 메모리 블록, 당신도 그들에게 참조 할 수 있습니다 배열 notation--로 이는 개인적으로 easier--을 발견하지만 어쩌면 당신은 그것을 조작해야 엄격하게 메모리 주소로. 그리고 이것은 당신이 그런 짓을하는 방식이다. 같은 종류의 더 당신이 할 수있는 멋진 일 당신이있어 아마 뭔가 대 실제로 구현하는 것이다. 나는 61을 사용합니다. 너희들은 아마 필요가 없습니다 그것에 대해 너무 많이 걱정합니다. 그러나 만약 당신이 관심이 있다면, (61) 내년을. 우리는 홈 스트레치들에있어. 나는 알고있다, 그것은 오래입니다. 동적 메모리 Allocation-- 그래서 우리는 그 일을 알고있다 일들을 우리는 동안 이야기 할 때 함께 우리의 첫 번째 섹션, 우리는 스왑 보았다 기능 곳이었다 우리의 주요 기능의 범위를 벗어난다. 그리고 우리는이 값을 전달했다 즉 효율적으로 복사 할 수 있었다. 그리고 스왑 일단 완료 실행, 그냥 스택을 떠났다. 기억, 우리가 스왑 프레임을 스택. 그것은 잎과 그 값은두고. 그리고 그들은 사라졌다. 우리는 아무것도 할 수 없었 그들과 우리와는 슬퍼 우리는 우리의 가치를 교환 할 수 없기 때문에. 하지만, 당신이 언급 한 C와 같은 메모리를 통해 많은 힘을 가지고있다. 그래서 당신은 무엇을 할 수 있는지 당신은 할 수있다 여기에 힙에 일을 할당 그 때까지 거기에있을 것입니다 그렇지 않으면 그들에게 말해. 그들은 좋은 아이 같아. 그들은 거기에있어. 그들은 두지 마십시오. 당신이 때까지 그들은 거기에있을거야 같은 확인, 당신은 멀리 갈 수 있습니다. 스택에 물건 반면, who-- 그들은 장난 꾸러기 아이 같은거야. 당신이 원하는 때 그들은 단지 도망합니다 거기에 있어야하고 다 갔어요. 당신이 그들을 다시 얻을 수 없습니다. 그래서 우리는 거 야는 ... 힙 malloc에​​ 무료에 대해 이야기하는 나는 확실히 너희들이야 강의에 대해 들었다. 그리고 기본적으로 방법 매우 영구 데이터를 가지고 있습니다. 그래서 당신은 데이터를 유지할 수 있습니다 주위에 원하는만큼. MHM. 청중 : 당신이 힙을 정의하고 쌓을 수 있나요? 그들은 물건을 넣어 장소를 좋아합니까? 스피커 1 : 그래서 그들은있어 기본적으로 그들이있어 그냥 ... 우리가 메모리를 참조하는 방식. 따라서 힙은 어디에 배치된다 메모리는 동적으로 할당 스택이 의미하는 반면 스택 프레임이 더 더 중심적인 그 실제로 실행하는 기능을합니다. 당신은 정말 제어 할 수 없습니다. 큰 차이는, 당신은 제어 할 수 있습니다 힙을 통해 당신이 원하는 경우. 당신은 스택에 덜 제어 할 수 있습니다. 스택에 따라 달라집니다 기능을 실행하는, 그리고 순서는 그들이있다 실행, 사물이 어떻게 반환됩니다. 힙 반면, 같은 우리는 당신이 말할 수있는, 볼 OK,이 값이 원하는 주위 때까지 그렇지 않으면 당신을 말해. 당신은 그것을 제거 할 수 없습니다. 당신은 그것을 대체 할 수있는 권한이 없습니다. 당신은 주위를 유지하는거야 한 제가 말씀으로합니다. 당신은 힙의 보스에 도착 당신 어쩌면 stack-- 반면, 같은 길을 속이다 당신의 보스가 될 수 있습니다. 그러나 꽤. 그리고 정말 그냥 메모리입니다. 그냥 다른 방법이다 의 메모리를 참조. 쿨. 에, 어떻게 그와 그래서 당신의 기억을 제어 할 수 있습니다. 그것은 malloc에​​로의 어떤 당신이 사용하는 얻을 것입니다. 그래서 그냥 짧다 메모리 할당. 즉, 모든입니다. 다른 멋진의 무리가있다 마지막에 ALLOC이 기능, 그들은 다른 것을 위해 서있다. 당신이 스토리지를 필요로 할 때 그래서 필요 그래서 현재의 기능보다 더 오래 갈 수 있습니다 때 전류가 기능은 도망 당신은 여전히​​ 데이터가 있음을 그것에서 가지고, 당신의 malloc을 사용하고 싶습니다. 즉, 힙에 초기화됩니다. 그리고 같은 내가 말했다 및 유지 당신이 그것을 유지하는 것, 말 당신이 그렇지 않으면 말할 때까지, 이는 여기서 중요한 것입니다. 그래서 한 가지주의 사항 및합니다 즉, 일반적으로 정말 중요합니다 이를 sizeof 것입니다 사용하기 매우 유용합니다 종류에 따라 때문에 기계의 당신은 실행하고, 그것은 다양한 양을 가질 수있다 걸리는 메모리. 그래서 당신은 항상 크기를 사용하려면 당신이 의존하는 기계가 아니에요, 그래서 코드 것 모든 시스템에서 실행됩니다. 그리고 그 한 부분이다 좋은 코드를 작성. 그것은 하나의 시스템에서 작동하는 경우, 하지만 다른 어느 프로그램이 얼​​마나 유용했다? 그래서 당신은 항상 원하는 확인 및 sizeof 연산자를 사용합니다. 청중 : 그래서 같은 것을입니다 10인치 [들림]의 크기? 스피커 1 :이 10 정수의 크기입니다. 그래. 그래서 정수의 크기가 반환됩니다 하나 INT는 얼마나 걸립니까. 또는 문자의 크기, 어떻게 대부분은 하나의 문자 걸릴 않습니다. 그리고 얼마나 많은 블록 그 당신이 원하는 무엇입니까? 이 경우 그래서, 우리는 뭔가를 원하는 것을 우리는 10 정수에 저장할 수 있습니다. 그리고 관계없이 작동합니다 기계, 어떤 멋지다. 그래서 얼마나 많은 바이트 것 실제로 당신을 줄? 빠른 수학. 청중 : 40. 스피커 1 : 40. 정확히. 그래서 또 다른 큰 일. 포인터 또는 malloc에​​는 null를 반환 할 수 있습니다. 그래서 다시, 항상 확인 null가 반환되는지 확인 당신이 시도하고 그것으로 무엇을하기 전에. 당신이 시도하고 역 참조하는 경우 지금이 포인터, 그냥 세그 폴트 것 당신이 가서 시도 때문에 당신이하지 말았어야 할 때 널 (null) 누릅니다. 그래서 항상 널 (null)이 있는지 확인합니다. 다시 말하지만, 모든 당신은 할 수 있습니다. 그것은 null을 반환 할 수 있습니다. 당신이 하나 있다면 그것은 null을 리턴합니다 공간 부족, 또는 어떤 이유 그것은 일부 메모리 버그에 달렸다. 그것은 때로는 null를 돌려줍니다. 그래서 당신은 단지 그것을 확인해야합니다. 즉이 모든 슬라이드 말하고있다. 그리고 우리는 무엇을 여기에 무료로 전화입니다. 같은 방법으로한다는 점에서 그래서 경우 당신이 파일을 닫아야합니다 파일을 열고, 당신이 경우 malloc에​​ 메모리, 당신 해당 메모리를 해제해야합니다. 그리고 너희들 얻을 것이다 정말 멋진 물건을 할 수 있습니다. 그리고 당신이 실행할 수있는 프로그램이있다 혹시 메모리를 누출하는 경우를 참조하십시오. 하지만 메모리가 누수 싶지 않아요. 정말 나쁘다. 그냥 엉망 일. 그냥 프로그래밍처럼 할 나쁜 디자인 효율성을위한 현명한. 그러나 그것은 단지 종류이기도 컴퓨터에 대한 나쁜. 그러니 그냥 무료 것들 당신이 그들을 malloc을 때. 너희들은 여기에 대칭을 참조하십시오. 슈퍼 간단한. 그냥 무료로하고 어떤 포인터, 어떤 이름의 포인터이고, 그 당신을 위해 그것을 자유롭게 처리됩니다. 쿨. 그리고 우리는이 있습니다. 그래서 우리는 그냥가는거야 이 프로그램을 통해 도보. 그리고 너희들이 수행됩니다. 그래서 [들리지] 단지 주. 그래서 우리는 몇 가지 INT의 * 포인터를 가지고있다. 그래서 우리는 포인터를 가지고 그 정수를 개최 할 예정입니다. 그리고 얼마나 많은 정수는 개최 할 예정입니까? 그냥 하나. INT의 크기. 우리는 있는지 확인 포인터가 있기 때문에 null의 우리가 아무것도하지 말하고 싶은 것이다. 그것은 나쁜. 그래서 우리는 중 일부 오류를 인쇄 메모리, 대부분 1 반환 너희들로 사용된다. 그리고 우리는 우리가 여기에있다 우리의 포인터 역 참조. 그래서 우리가 저장 거란 뜻 우리에게 주어진 위치에서 뭔가. INT * 포인터, 또는 malloc에​​가 반환 그것은이 따로 곳의 주소 당신을 위해 메모리. 그래서 기본적이다 당신이 경우 라니 제공 한 무리의 생각 이웃 주택 당신은 넣어 원하는 당신의 가구에, malloc에 OK와 같은, 당신이 얻을 것이다 세 집에갑니다. 그리고 그것은 당신을 제공합니다 집 세의 주소. 그래서 지금,이 포인터를 저장 주소, 당신의 집의 주소를 저장합니다. * PTR 수단, OK, 나는 나의 집에 있어요. 쿨. 나는 약간의 정수를 얻을 필요가있다. 그래서 당신은 사람을 요구하고 지금 당신에게 가구를 제공합니다. 그래서 당신은 어떤 INT를 얻을. 그리고 포인터에 넣습니다 어디가 가리키는 것. 그리고, 그것은 단지 인쇄 아웃, 당신은 어디든지 들어갔다. 그리고 다시, 참조. 그래서이이 갔다처럼 해결하고 당신이 무엇인지 보았다. 쿨? 그리고 물론 우리는 우리의 포인터를 무료. 포인터를 해제하는 것을 잊지 마십시오. 널 (null)을 확인하는 것을 잊지 마십시오. 포인터를 해제하는 것을 잊지 마십시오. 당신은 당신의 기억 두 가지가 이, 또는 당신은 기억해야한다고. 예. 청중 : [들리지] 물건 그런, 숯불 * s의. 우리는 사람들을 어떻게 확보하지 거죠? 스피커 1 : 흠? 청중 : 문자열 같은 사람들이 있습니까? 당신은 문자열이 말했다 바로 숯불 * s의 같은, 맞죠? 그럼 왜 우리는 문자열을 해제하지 않습니다? 스피커 1 : 만에 무료 당신은 mallocing하는 경우. 청중 : 오, 당신이 mallocing하는 경우. 스피커 1 : 그래서 malloc에 무료 두 가지가 있습니다 당신은 항상 함께 가지고 있어야한다고. F 개방 F 가까운, 두 가지 당신은 함께 있어야합니다. 두 이러한 경우, 널 (null)이 있는지 확인합니다. 예. 청중 : 그래서 무료로 그냥 다른 것을 허용 후가 저장 될 이 프로그램을 사용하고있다? 스피커 1 : 그냥 말하는 것, 좋아, 내가이 수행하고 있습니다. 당신은 그것을 주위를 계속 할 필요가 없습니다. 그렇지 않으면 컴퓨터는 것 다만 시도 좋아하고 거기에 보관합니다. 그리고 당신은 그것을 실행 못 ... 나중에 메모리 문제로. 당신은 항상 있기 때문에 그것을 해제 할 그것은 OK, 난 컴퓨터를 알려줍니다 메모리의이 자리를 함께 수행. 당신은 그것을 다시 할 수 있습니다 나를 위해 나중에 사용할 수 있습니다. 쿨? 예. 청중 : 그래서 우리는 % d 개를 사용 단지 이중 때문 돌아오고, 또는 왜 [들림] 친구는 .... 청중 : 당신은 % I을 사용할 수 있습니까? 스피커 1 : % 사용 i 수 있습니다. 여기서 남은 질문? 어서. 청중 : 난 그냥 빠른 질문이 있습니다. 그래서 PTR 변수 그게 ... 같은 INT의 *의 PTR = malloc에​​와, 그것은 단지는 끝났어 memory--에있는 장소를 가리키는 스피커 1 : [들리지 하시겠습니까? 청중 : 떡 치는이의 크기는 집게 리아 아니, 괜찮아요. 그러나 그것은 단지 장소를 가리키는 것 단지 4 바이트처럼 메모리. 스피커 1 : 맞아요. INT는 말한다 너무 크기의 malloc, OK, 난 도망 갈거야, 당신을 위해 4 바이트의 메모리를 찾을 수 있습니다. 그것은 네 것을 발견하면 바이트 메모리 그것을 당신은 주소를 다시 부여합니다 이 시작하는 위치의, 그 저장 무엇 포인터, 또는 PTR에서. 좋은. 너희들은 대부분의보다 혼란 봐 내가 포인터에 대해 이야기 사람들, 그래서 나는 지금 매우 기분이 좋다. 좋아. 언제나처럼, 너희들은 모두이 있어야합니다 지금 당신의 pset2 성적을 얻었다. 내가 아는 어떤 남았습니다가왔다 그것이 말하는 것, 유효하지 않은 식 또는 뭔가. 당신의 모든 걸 처리하는 경우 성적은 내 옆에 유효합니다. 그래서 난 당신을 보낼 수 있습니다 성적의 스크린 샷. 그냥뿐만 아니라 당신이 있다면 알려주세요 모든 등급 또는 뭔가가 이해하지 않는 것 같습니다. 내게로 오라. 나는 당신의 슈퍼 자랑스러워했습니다 사람들은 이미, 그래서 그것을 유지. 그리고 당신의 주의 좋은 휴식을해야합니다. 나는 몇 가지를 볼 수 있습니다 나는 확신 근무 시간에 당신의.