>> [음악 재생]
>> DOUG 로이드 : 좋아, 이렇게하자 명령 줄 인수에 대해 이야기.
그래서, 지금까지 과정에서 꽤 프로그램의 많은 모든
아마 시작 이 항아리 INT 주요 무효 등을들 수있다.
우리는 수집했습니다 사용자 입력 우리가 그것을 필요로하는 경우
이러한 우리의 프로그램에 마리오 프로그램, 예를 들면,
에서 프로그램의 지시에 의해.
우리는 수정이 필요하지 않은 주의 선언,
때문에 대신 주 우리의 내부 단지 당신이 INT를 얻기 위해 호출 할 수있다,라고.
얼마나 큰 당신은 피라미드가되고 싶어합니까?
아니면 얻기 위해 호출 할 수있다 얼마나 많은 변화를 float--
사용자에게 나는 출력해야합니까?
>> 또 다른 방법은, 비록 존재 우리는 우리의 사용자를 원하는 경우
제공 할 수 있어야합니다 우리의 프로그램에 데이터
대신 동안의 런타임 이 프로그램은 실행
미묘한 차이지만 때로는 매우 유용 하나,
우리는 주 선언의 새로운 형태가 필요합니다.
우리는 우리가 원하는 경우 INT의 주요 공백​​을 사용할 수 없습니다 명령 줄에서 다른 데이터를 수집
사용자가 프로그램을 실행할 때, 따라서 명령 줄 인수.
>> 이 명령 줄을 수집하려면 사용자로부터 인수
당신의 선언을 변경 이 항아리 INT처럼 주
주요 오픈 괄호, INT의는 argc, 쉼표, 문자열 변수는 argv, 대괄호,
다음 중괄호를 엽니 다.
그래서 이미 무엇을 의미합니까?
글쎄, 우리는 두 개의 매개 변수에 전달하는, 주 또는 인수, 또는 입력.
하나는 정수라고 는 argc, 다른 하나는 무엇입니까?
그것은 바로, 문자열의 배열입니까?
우리는 광장 브래킷 표기법을 참조하십시오.
그것은 문자열의 배열입니다.
그것은 각각의 문자열이 아니다, 그것은 문자열의 배열입니다.
그리고이 두 인수는 argc와 argv를, 어떤 데이터를 사용자가 알 수 있도록
명령 줄에서 제공하고 있습니다 얼마나 많은 것들을 그들
명령 줄에서 제공했습니다.
작업 할 꽤 유용한 것들.
>> ARGC는 인수 개수를 의미합니다 당신이 방법에 의해, 알아야 할,
당신은 ARGC 부를 수 있음 당신이 그것을 원하는대로.
당신은 당신이 원하는 무엇이든 변수는 argv를 호출 할 수 있습니다.
이 단지 기존의 이름입니다 우리가 them-- 인수 카운트에 사용하는,
우리는 두 번째에서 살펴 보 겠지만, 인수 벡터, 변수는 argv.
그러나 당신이 그들을 호출 할 필요가 없습니다 당신이 원하지 않는 경우는 argc와 argv를,
하지만 통상적으로, 즉 우리가하는 일입니다.
>> 어쨌든, ARGC 인수의 수입니다.
그것은 정수 형 변수이고 그래서뿐만 우리는 두 가지를 가지고 있다면 당신은, 예상
우리는 발견 할 거라고 이러한 입력하는지 알아
얼마나 많은 물건 사용자 입력,는 argc이다
얼마나 우리에게 얘기를하려고 사용자가 입력 한 물건.
그것은 당신에게의 수를 제공합니다 그래서 명령 줄 인수 사용자
프로그램이 실행될 때 입력.
프로그램이 있다면 도트 욕심 슬래시 실행
당신의 욕심의 내부 주요 기능을 프로그램
선언 INT 주요 INT의 ARGC을 가지고, 문자열은 대괄호 argv를
그 경우는 argc는 하나입니다.
이제 우리는하지 않는주의 얼마나 많은 일을 계산
사용자는 프로그램 이름 다음에 입력했습니다.
프로그램 이름 자체가 계산 명령 줄 인수로.
>> 그래서에, 욕심 슬래시 점 이 경우는, ARGC는 하나입니다.
사용자는 슬래시 욕심 1024 CS50를 입력 한 경우 이 경우 argc의 명령 줄에서
세 가지 일 것입니다.
그리고 우리는 방법이 있기 때문에 이것을 알고 그 문자열 사이의 구분
여부를 검출 공백이나 탭이있다,
또는 그들 사이처럼 뭔가.
그래서 공백의 양, 소위, 값 사이에 명령 줄을 입력
얼마나 많은 나타냅니다.
그래서 욕심 공간 1024 공간을 슬래시 점 CS50는 ARGC, 그 경우, 세이다.
>> ARGV 인수 벡터이다.
벡터, 그런데, 그냥 배열에 대한 또 다른 단어,
이것은 배열입니다 그 문자열을 저장한다.
인 요소마다 1 개의 문자열, 스트링이 사용자 실제로
명령 줄에서 입력 프로그램이 실행되었을 때.
이제, AS는 경우입니다 어떤 배열로, 당신의 경우
우리의 논의에서 리콜 배열 변수는 argv의 첫 번째 요소
항상 발견 할 것입니다 argv를 대괄호 제로.
즉, 최초의 인덱스의 argv 배열의.
너무 will-- 그리고 사실, 그 의지 항상 프로그램의 이름,
항상에 위치 할 것 argv를 대괄호 제로.
>> 변수는 argv의 마지막 요소는 항상 발견 argv를 대괄호의 ARGC을 뺀에서.
당신은 왜 보는가?
얼마나 많은 요소를 기억 이 배열에 존재한다.
음, 우리는 하라구, 그건 .. 알고 요소는 argc 번호.
사용자가에서 세 가지를 입력 한 경우 명령 줄은 ARGC 세 가지입니다.
그러나 때문에 C에서, 때 우리는 최선을 다하고 있습니다 어레이와, 상기 어레이의 각 요소,
또는 오히려 지수 배열, 제로에서 시작합니다.
우리는 세 가지 요소가있는 경우 우리의 배열, 우리는 argv를 제로 요소가
argv를 하나의 요소, argv를 두에 및 요소입니다.
변수는 argv에서 어떤 요소가 없습니다 세 및 크기의 세 어레이.
그래서 왜 마지막이다 변수는 argv의 요소는 항상 수
변수는 argv 광장에서 찾을 수 브라켓는 argc 뺀.
>> 그럼 사용자가 실행을 가정하자 follows--과 욕심 프로그램
그들은 명령 줄 점에 입력하면 욕심 공간 1,024 공간 CS50 슬래시
그리고 어떤 이유에서 우리는했습니다 이미 우리의 욕심 프로그램을 준비
알고 이러한 작업을하려면 명령 줄 인수.
우리가 일을 할 때 우리는 이전에하지 않았다 욕심이 문제에 대한 그것에,
하지만 이제 우리가 지금 수정 한 가정 해 봅시다 이 때문에 우리는 과정을
어떤 식 으로든 명령 줄 인수.
이 경우, 제로 argv를 점 슬래시는 욕심이다.
변수는 argv 하나는 무엇입니까?
글쎄, 그것은 바로 1024입니까?
그것은 1024, 그러나 여기에서의 정말 중요한 distinction--
당신은 변수는 argv의 데이터 유형을 기억 하는가?
>> 그것은 바로, 문자열을 저장?
그러나 1024처럼 보인다 정수 값이다.
이것은 정말 중요하다 구분하고, 실제로
뭔가 될 것 당신을 나중에 문제가 발생할 수 있습니다.
변수는 argv의 모든입니다 문자열로 저장됩니다.
그래서 argv를 하나의 내용은 하나의 문자열, 제로, 2, 4,
그 네 개의 문자로 구성된.
그것은 사용자가 입력 한 경우로서있어 하나, 제로, 2, 4
개별 문자 또는 문자로.
또한, 정수 1,024 아니다 그래서 당신이 직접 할 수 없습니다
INT 1,000을 말하여 작업, 또는 오히려 INT X는 argv를 하나의 마이너스 24 같습니다.
>> 직관적으로, 당신은 생각할 수 있습니다 확인, 잘가 1,024 마이너스 (24)의 등
그래서 X는 1000과 동일하다.
그러나 사실, 즉, 그렇지 않다 argv를 하나의 캐릭터이기 때문이다.
문자열 1024.
지금 할 수있는 기능이있다 정수로 문자열을 변환하는 데 사용됩니다.
나는 당신을 위해 그것을 망치고되지 않습니다 지금,하지만 난 Zamyla 확신
에 대해 말씀 드릴 것입니다 미래의 문제에 대한 연습.
그러나 당신은 또한 찾을 수 있습니다 문제가 그때 엔 변명
나, 함수는 것 참조 50에서이 작업을 수행,
당신은 참조 가이드에 가면 당신은 함수를 찾을 수
당신이 변환을 할 것입니다.
그러나 다시, 연습에 미래의 문제에 대한,
Zamyla는 드릴 것입니다 어떤 기능을 알려
그것은 그 변환 것이다 정수 1024 문자열 1024.
>> 좋아, 그래서 이동.
우리는 우리의 변수는 argv의 제로 다루었 우리는 하나의 argv를 다루었 다.
무엇 argv를 두입니까?
CS50.
그 하나는 아마 꽤 자기 ​​설명.
어떻게 변수는 argv 세에입니까?
그럼 다시, 우리가 정말 모르는, 오른쪽?
우리는 세 가지 크기의 배열을 가지고 그 얼마나 많은 요소를 사용자의
명령 줄에서 입력, 그래서 우리는 세 가지를 argv를 갈 경우,
우리는 지금 넘고있어 우리의 배열의 범위.
컴파일러는, 우리는이 작업을 수행 할 수있게된다 더 직관적 인 문제가 그것으로이 없다,
그러나 사실의 관점에서 무엇을거야 일이, 우리는 정말로 알지 못한다.
그것은 무엇에 따라 달라집니다 메모리 곳에 위치
argv를 세가 될 것으로 예상된다.
그래서 우리가 끝낼 수 멀리 스코틀랜드 무료로 받고.
더 많은 가능성이없는 이상, 특히 반대로 당신은 argv를 사용하여 작업하는
다른 배열에 즉, 우리의 프로그램에의
우리는 아마 고통을거야 세그먼트 오류. 그래서 다시,
경계를 지나쳐 않도록주의해야 당신의 배열, 특히 argv를,
의 높은 수준의 주어진 프로그램의 중요성.
>> 나는 더그 로이드입니다.
이 CS50입니다.