델파이 부울 기본값. 매개변수를 값으로 전달합니다. 당신이 알아야 할 것

이미 알고 있듯이 C++에서는 매개변수를 사용하여 함수에 정보를 전달할 수 있습니다. 13과에서 C++에서는 함수 오버로드도 제공하여 정의에 다양한 수의 매개변수 또는 다양한 유형의 매개변수를 포함할 수 있다는 것을 배웠습니다. 또한 C++에서는 함수를 호출할 때 매개변수를 생략할 수 있습니다. 이러한 경우 생략된 매개변수에는 기본값이 사용됩니다. 이번 강의에서는 함수 매개변수의 기본값을 설정하는 방법을 설명합니다. 이 단원을 마치면 다음 핵심 개념을 마스터하게 됩니다.

C++에서는 프로그램이 매개변수의 기본값을 지정할 수 있습니다.

매개변수의 기본값은 정의 시 함수 헤더에 지정됩니다.

함수 호출에서 하나 이상의 매개변수 값을 생략하면 C++에서는 기본값을 사용합니다.

함수 호출에서 특정 매개변수의 값이 생략되면 이후의 모든 매개변수의 값도 생략되어야 합니다.

매개변수에 기본값을 제공하면 함수의 재사용(여러 프로그램에서 사용)이 더 쉬워집니다.

기본 값의 정의

함수 매개변수에 기본값을 제공하는 것은 매우 쉽습니다. 아래와 같이 함수를 선언할 때 바로 C++ 할당 연산자를 사용하여 매개 변수에 값을 할당하면 됩니다.

void some_function(int size=12, float cost=19.95) //—->기본값

{
// 함수 연산자
}

다음 프로그램은 DEFAULTS입니다. CPP는 show_parameters 함수 내의 매개변수 a, b, c에 기본값을 할당합니다. 그런 다음 프로그램은 이 함수를 4번 호출합니다. 처음에는 매개변수가 전혀 없이, 다음에는 a에 대한 값만 사용하고, 다음에는 a와 b에 대한 값을 사용하고, 마지막으로 세 매개변수 모두에 대한 값을 사용하여 호출합니다.

#포함하다

void show__parameters (int a=1, int b=2, int c=3)

{
시합<< «a» << a << » b » << b << » с » << с << endl;
}

{
show_parameters();
show_parameters(1001);
show_parameters(1001, 2002);
show_parameters(1001, 2002, 3003);
}

이 프로그램을 컴파일하고 실행하면 다음과 같은 출력이 화면에 나타납니다.

C:\>기본값

1001b 2c 3

1001b 2002c 3

1001b 2002c 3003

보시다시피, 필요한 경우 함수는 기본 매개변수 값을 사용합니다.

매개변수 값 건너뛰기 규칙

프로그램이 기본값을 제공하는 함수에 대해 특정 매개변수를 생략하는 경우 모든 후속 매개변수를 생략해야 합니다. 즉, 중간 매개변수를 생략할 수 없습니다. 이전 프로그램의 경우 show_parameters에서 b 매개변수의 값을 생략해야 했다면 프로그램에서도 c 매개변수의 값을 생략해야 했습니다. b 값을 생략하고 a와 c 값을 지정할 수 없습니다.

기본값 설정

함수를 정의할 때 C++에서는 하나 이상의 매개변수에 대한 기본값을 지정할 수 있습니다. 프로그램이 이 함수에 대한 후속 호출에서 하나 이상의 매개변수를 생략하면 함수는 해당 매개변수에 대해 기본값을 사용합니다. 매개변수에 기본값을 할당하려면 함수 정의 내에서 할당 연산자를 사용하면 됩니다.
예를 들어, 다음 급여 함수는 시간 및 요율 매개변수에 대한 기본값을 지정합니다.

부동 급여(int Employment_id, 부동 시간 = 40, 부동 요율 = 5.50)

// 연산자
}

프로그램이 하나의 매개변수를 생략하면 모든 후속 매개변수도 생략해야 합니다.

당신이 알아야 할 것

이번 강의에서는 C++를 사용하여 함수 매개변수에 대한 기본값을 지정할 수 있다는 것을 배웠습니다. 프로그램이 하나 이상의 매개변수를 생략하면 함수는 기본값을 사용합니다. 다음 단원에서는 프로그램이 C++에서 객체 지향 프로그래밍을 사용하기 시작하면서 기본 매개변수를 사용하여 다양한 클래스 변수를 초기화하게 됩니다. 이미 알고 있듯이 변수를 사용하면 특정 유형(int, float 등)의 값을 저장할 수 있습니다. 16과에서는 배열 내에 동일한 유형의 여러 값을 저장하는 방법을 배웁니다. 예를 들어 프로그램은 100명의 학생에 대한 시험 점수 또는 50개의 주식 가치를 저장할 수 있습니다. 배열을 사용하면 이러한 값을 매우 쉽게 저장하고 사용할 수 있습니다. 16과를 공부하기 전에 다음 기본 개념을 숙지했는지 확인하세요.

  1. 함수 매개변수에 기본값을 할당하려면 함수 정의에서 직접 C++ 할당 연산자를 사용하세요.
  2. 프로그램이 함수를 호출할 때 매개변수 값을 생략하면 함수는 기본값을 사용합니다.
  3. 프로그램이 하나의 매개변수 값을 생략하면 모든 후속 매개변수의 값도 생략해야 합니다. 프로그램은 중간 매개변수를 생략할 수 없습니다.
  4. 기본 매개변수를 지정하면 다른 프로그램을 포함하여 기능을 더 쉽게 사용할 수 있습니다.

조만간 모든 프로그래머는 프로시저와 함수를 사용해야 합니다. 우리 모두는 Pascal에서 복잡한 것이 없다는 것을 기억합니다. 그러나 프로그램을 올바르게 컴파일하려면 알아야 할 몇 가지 사항이 일반적으로 책에 설명되어 있지 않습니다.

괄호

매개 변수 없이 프로시저와 함수를 호출할 때 괄호를 추가하는 것은 Delphi에서는 더 이상 새로운 기능이 아니지만 이 기능은 거의 알려져 있지 않습니다. 이 기능은 서로 다른 언어로 프로시저와 함수를 호출할 때 구문의 차이를 지속적으로 기억할 필요가 없기 때문에 두 가지 언어(C++ 및 Delphi)로 작업해야 하는 프로그래머에게 높이 평가될 것입니다. Delphi에서는 아래 두 옵션이 모두 유효한 것으로 간주됩니다.

Form1.Show;
Form1.Show();

과부하 가능성

프로시저 및 함수 오버로딩의 개념은 Delphi 4에서 처음 도입되었습니다. 이를 통해 이름은 같지만 매개변수 목록이 다른 여러 가지 프로시저와 함수를 가질 수 있습니다. 이러한 프로시저와 기능은 과부하 지시문을 사용하여 설명해야 합니다.

절차 테스트(I: 정수); 초과 적재;
절차 Test(S: 문자열); 초과 적재;
절차 테스트(D: 이중); 초과 적재;

테스트 프로시저를 호출할 때 Delphi는 전달된 매개변수에 따라 세 가지 프로시저 중 어느 프로시저를 실행해야 할지 자체적으로 결정합니다. 그러나 이것이 언어의 가장 안전한 기능은 아니라는 점에 유의해야 합니다. 과부하된 프로시저와 함수를 사용하면 프로그램에 미묘한 오류가 발생하는 원인이 될 수 있습니다. 그러므로 이 기회를 잘 활용하시기 바랍니다.

매개변수 전달

Pascal을 사용하면 값이나 참조를 통해 함수와 프로시저에 매개변수를 전달할 수 있습니다. 전달된 매개변수는 내장형 또는 사용자 정의 유형이거나 개방형 배열일 수 있습니다. 프로시저나 함수에서 해당 값이 변경되지 않는 경우 매개변수는 상수일 수도 있습니다.
값으로 매개변수 전달
이 매개변수 전송 모드는 기본적으로 사용됩니다. 매개변수가 값으로 전달되면 이 변수의 로컬 복사본이 생성되어 프로시저나 함수에서 처리하기 위해 제공됩니다. 다음 예를 살펴보십시오.

절차 테스트(들: 문자열);

지정된 프로시저를 호출하면 매개변수로 전달된 문자열 s의 복사본이 생성되며, 이를 통해 테스트 프로시저가 작동합니다. 이 경우 행에 대한 모든 변경 사항은 원래 변수 s에 어떤 식으로든 영향을 주지 않습니다.

그러나 이는 객체에는 적용되지 않습니다. 예를 들어, 변수(또는 객체의 인스턴스) TStringList가 함수에 전달되면 이 경우 참조에 의한 전달이 발생합니다(명시적으로 지정되지 않은 경우에도). 이 전송 방법은 대다수가 가장 선호하는 방법이지만 동시에 가장 비실용적이기도 합니다. 메서드를 실행하려면 전달된 변수의 정확한 복사본을 만들기 위해 추가 메모리가 할당됩니다. 이 문제를 해결하려면 아래 설명된 방법 중 하나를 사용해야 합니다.

참조로 매개변수 전달
Pascal을 사용하면 참조를 통해 함수나 프로시저에 매개변수를 전달할 수도 있습니다. 이러한 매개변수를 변수 매개변수라고 합니다. 참조로 매개변수를 전달한다는 것은 함수나 프로시저가 수신된 매개변수 값을 변경할 수 있음을 의미합니다. 매개변수를 참조로 전달하려면 var 키워드를 사용하여 호출된 프로시저나 함수의 매개변수 목록에 배치합니다.

절차 ChangeMe(var x: longint);
시작하다
x:= 2; // 호출된 프로시저에 의해 변경된 매개변수 x
끝;

x의 복사본을 만드는 대신 var 키워드는 x 자체의 주소를 전달해야 프로시저가 해당 값을 직접 변경할 수 있습니다.

상수 매개변수 전달
함수나 프로시저에 전달된 데이터를 변경할 필요가 없으면 매개변수를 상수로 설명할 수 있습니다. const 키워드는 매개변수가 변경되는 것을 방지할 뿐만 아니라 컴파일러가 보다 최적의 문자열 및 레코드 전달 코드를 생성할 수 있도록 해줍니다. 다음은 상수 매개변수 선언의 예입니다.

프로시저 테스트(const s: string);

개방형 배열 전달
개방형 매개변수 배열을 사용하면 다양한 수의 매개변수를 함수나 프로시저에 전달할 수 있습니다. 매개변수로 동일한 유형의 요소로 구성된 개방형 배열이나 다른 유형의 상수 배열을 전달할 수 있습니다. 아래 예제에서는 개방형 정수 배열을 매개변수로 전달해야 하는 함수를 선언합니다.

함수 AddEmUp(A: 정수 배열): 정수;

개방형 배열에서는 변수, 상수 또는 상수의 표현식을 전달할 수 있습니다.

High, Low 및 SizeOf 함수를 사용하여 실제로 함수나 프로시저에 전달된 매개 변수 배열에 대한 정보를 얻을 수 있습니다.

오브젝트 파스칼은 또한 const 유형의 배열을 지원하므로 하나의 배열에 다양한 유형의 데이터를 전달할 수 있습니다. 이러한 배열을 사용하여 매개변수를 수신하는 함수 또는 프로시저를 선언하는 구문은 다음과 같습니다.

예를 들어 다음 연산자를 사용하여 위에 선언된 함수를 호출할 수 있습니다.

절차 WhatHaveIGot(["Text", 10, 5.5, @WhatHaveIGot, 3.14, true, "c"]);

함수나 프로시저에 상수 배열을 전달할 때 컴파일러는 전달된 모든 매개변수를 암시적으로 TVarRec 유형으로 변환합니다. TVarRec 데이터 유형은 시스템 모듈에서 다음과 같이 선언됩니다.

PVarRec = ^TVarRec;
TVarRec = 기록
케이스 바이트
vtInteger: (VInteger: 정수; VType: 바이트);
vtBoolean: (VBoolean: 부울);
vtChar: (VChar: 숯);
vt확장: (V확장: P확장);
vtString: (VString: PShortString);
vtPointer: (VPointer: 포인터);
vtPChar: (VPChar: PChar);
vtObject: (VObject: TObject);
vtClass: (V클래스: TClass);
vtWideChar: (VWideChar: WideChar);
vtPWideChar: (VPWideChar: PWideChar);
vtAnsiString: (VAnsiString: 포인터);
vtCurrency: (VCurrency: PCurrency);
vtVariant: (VVariant: PVariant);
vtInterface: (VInterface: 포인터);
vtWideString: (VWideString: 포인터);
vtInt64: (VInt64: PINt64);
끝;

VType 필드는 TVarRec 레코드의 이 인스턴스에 포함된 데이터 유형을 결정하고 지정된 값 중 하나를 사용할 수 있습니다.

상수 배열은 다양한 유형의 데이터를 전달할 수 있으므로 수신된 매개변수를 처리하는 함수나 프로시저를 생성할 때 약간의 어려움이 발생할 수 있습니다. 이러한 배열을 사용하는 예로 결과 매개변수 배열의 요소를 살펴보고 해당 유형을 표시하는 WhatHaveIGot 프로시저의 구현을 고려해 보세요.

절차 WhatHaveIGot(A: const 배열);
var
i:정수;
TypeStr: 문자열;
시작하다
i:= 낮음(A)에서 높음(A) do
시작하다
사례 A[i].V 유형
vtInteger: TypeStr:= "정수";
vtBoolean: TypeStr:= "부울";
vtChar: TypeStr:= "Char";
vtExtended: TypeStr:= "확장";
vtString: TypeStr:= "문자열";
vtPointer: TypeStr:= "포인터";
vtPChar: TypeStr:= "PChar";
vtObject: TypeStr:= "개체";
vtClass: TypeStr:= "클래스";
vtWideChar: TypeStr:= "WideChar";
vtPWideChar: TypeStr:= "PWideChar";
vtAnsiString: TypeStr:= "AnsiString";
vtCurrency: TypeStr:= "통화";
vtVariant: TypeStr:= "변형";
vtInterface: TypeStr:= "인터페이스";
vtWideString: TypeStr:= "WideString";
vtInt64: TypeStr:= "Int64";
끝;
ShowMessage(Format("배열 항목 %d은(는) %s입니다.", ));
끝;
끝;

기본 매개변수 값

Delphi에는 기본 매개변수 값을 사용하는 매우 유용한 기능이 있습니다. 프로시저나 함수 매개변수의 기본값을 설정할 수 있습니다. 이 값은 이 매개변수의 값을 지정하지 않고 프로시저나 함수를 호출하는 경우에 사용됩니다. 프로시저나 함수 선언에서 매개변수의 기본값은 매개변수 이름 뒤의 등호 뒤에 지정됩니다. 다음 예를 통해 이를 설명해 보겠습니다.

프로시저 HasDefVal(s: 문자열; i: 정수 = 0);

이 선언은 HasDefVal 프로시저를 두 가지 방법으로 호출할 수 있음을 의미합니다. 첫 번째 경우에는 평소와 같이 두 매개변수를 모두 지정합니다.

프로시저 HasDefVal("안녕하세요", 26);

두 번째 경우에는 s 매개변수의 값만 설정하고 i 매개변수에는 기본값을 사용할 수 있습니다.

프로시저 HasDefVal("안녕하세요");

기본 설정을 사용할 때 명심해야 할 몇 가지 규칙이 있습니다.

  • 기본값이 있는 매개변수는 매개변수 목록의 마지막에 배치되어야 합니다. 기본값이 없는 매개변수는 목록에서 기본값이 있는 매개변수 뒤에 표시되어서는 안 됩니다.
  • 기본값은 일반 유형, 포인터 또는 세트의 매개변수에만 할당할 수 있습니다.
  • 기본값은 값으로만 ​​전달되거나 const 수정자를 사용하여 전달될 수 있습니다. 참조 또는 유형이 지정되지 않은 매개변수일 수 없습니다.
기본 매개변수 값을 사용하는 중요한 이점 중 하나는 이전 버전과의 호환성을 유지하면서 기존 프로시저 및 함수의 기능을 쉽게 확장할 수 있다는 것입니다. 두 정수를 더하는 기능이 핵심 요소인 프로그램이 소프트웨어 시장에 출시되었다고 가정해 보겠습니다.

함수 Add(I1, I2: 정수): 정수;
시작하다
결과:= I1 + I2;
끝;

또한 연구를 통해 프로그램에 세 개의 숫자를 추가하는 기능을 추가하는 가능성이 입증되었다고 가정해 보겠습니다. 그러나 기존 함수를 숫자 3개를 추가하는 함수로 바꾸면 많은 양의 텍스트를 전달해야 하며 함수에 다른 매개변수를 추가하면 더 이상 컴파일되지 않습니다. 그러나 기본 매개변수 값을 사용하면 문제를 쉽고 간단하게 해결할 수 있습니다. 아래와 같이 함수 선언을 변경하면 충분합니다.

함수 Add(I1, I2: 정수; I3: 정수 = 0): 정수;
시작하다
결과:= I1 + I2 + I3;
끝;

지시문($X-)

($X-) 지시문은 함수를 프로시저로 호출하는 것을 금지합니다(반환 결과 무시). 기본적으로 이 모드는 활성화되어 있습니다(($X+)). 따라서 프로젝트 옵션 대화 상자의 컴파일러 탭에 있는 확장 구문 옵션이 선택 취소되거나 컴파일러 지시문($X-)이 지정된 경우 결과 변수의 사용이 허용되지 않는다는 점을 기억하십시오.

모든 Objecl Pascal 함수에는 반환 값을 보유하는 Result라는 지역 변수가 있습니다. 함수와 이름이 같은 변수에 값을 할당하여 함수에서 값을 반환할 수도 있습니다. 이는 이전 버전에서 보존된 Pascal 언어의 표준 구문입니다. 함수 본문에 이름이 있는 변수를 사용할 때 이 이름을 처리하는 데 큰 차이가 있다는 점을 잊지 마십시오. 모두 변수의 위치(대입 연산자의 왼쪽 또는 다른 위치)에 따라 다릅니다. 기능 텍스트. 대입문의 왼쪽에 함수 이름이 지정되면 함수의 반환 값이 대입된 것으로 간주됩니다. 다른 모든 경우에는 이 함수가 재귀적으로 호출된다고 가정합니다.

프로시저와 함수는 모든 프로그래밍 언어의 핵심 개념이며, 이것이 없이는 심각한 프로그램이 작동할 수 없습니다. 따라서 작업 메커니즘을 완전히 이해하는 것이 매우 중요합니다.


이 문서에서는 절차와 기능에 중점을 둡니다. 이 책은 주로 모든 기능을 더 잘 이해하고 이를 보다 효과적으로 사용하는 방법을 배우려는 초보 프로그래머를 대상으로 합니다. 그러나 다른 모든 사람들에게는 이 기사가 유용할 수 있습니다. 의 시작하자.

이 기사에서는 다음 질문을 고려할 것입니다.
괄호

매개 변수 없이 프로시저와 함수를 호출할 때 괄호를 추가하는 것은 Delphi에서는 더 이상 새로운 기능이 아니지만 이 기능은 거의 알려져 있지 않습니다. 이 기능은 서로 다른 언어로 프로시저와 함수를 호출할 때 구문의 차이를 지속적으로 기억할 필요가 없기 때문에 두 가지 언어(C++ 및 Delphi)로 작업해야 하는 프로그래머에게 높이 평가될 것입니다. Delphi에서는 아래 두 옵션이 모두 올바른 것으로 간주됩니다.

테스트 프로시저를 호출할 때 Delphi는 전달된 매개 변수에 따라 세 가지 프로시저 중 어느 프로시저를 실행해야 하는지 자체적으로 결정합니다. 그러나 이것이 언어의 가장 안전한 기능은 아니라는 점에 유의해야 합니다. 과부하된 프로시저와 함수를 사용하면 프로그램에 미묘한 오류가 발생하는 원인이 될 수 있습니다. 그러므로 이 기회를 잘 활용하시기 바랍니다.

Pascal을 사용하면 값이나 참조를 통해 함수와 프로시저에 매개변수를 전달할 수 있습니다. 전달된 매개변수는 내장형 또는 사용자 정의 유형이거나 개방형 배열일 수 있습니다. 프로시저나 함수에서 해당 값이 변경되지 않는 경우 매개변수는 상수일 수도 있습니다.

이 매개변수 전송 모드는 기본적으로 사용됩니다. 매개변수가 값으로 전달되면 이 변수의 로컬 복사본이 생성되어 프로시저나 함수에서 처리하기 위해 제공됩니다. 다음 예를 살펴보십시오.

절차 테스트(들: 문자열);

지정된 프로시저를 호출하면 매개변수로 전달된 문자열 s의 복사본이 생성되며, 이를 통해 테스트 프로시저가 작동합니다. 이 경우 행에 대한 모든 변경 사항은 원래 변수 s에 어떤 식으로든 영향을 주지 않습니다.

그러나 이는 객체에는 적용되지 않습니다. 예를 들어, 변수(또는 객체의 인스턴스) TStringList가 함수에 전달되면 이 경우 참조에 의한 전달이 발생합니다(명시적으로 지정되지 않은 경우에도).

Pascal을 사용하면 참조를 통해 함수나 프로시저에 매개변수를 전달할 수도 있습니다. 이러한 매개변수를 변수 매개변수라고 합니다. 참조로 매개변수를 전달한다는 것은 함수나 프로시저가 수신된 매개변수 값을 변경할 수 있음을 의미합니다. 참조로 매개변수를 전달하려면 키워드를 사용하십시오. var, 호출된 프로시저나 함수의 매개변수 목록에 배치됩니다.

개방형 배열 전달

개방형 매개변수 배열을 사용하면 다양한 수의 매개변수를 함수나 프로시저에 전달할 수 있습니다. 매개변수로 동일한 유형의 요소로 구성된 개방형 배열이나 다른 유형의 상수 배열을 전달할 수 있습니다. 아래 예제에서는 개방형 정수 배열을 매개변수로 전달해야 하는 함수를 선언합니다.

High, Low 및 SizeOf 함수를 사용하여 실제로 함수나 프로시저에 전달된 매개 변수 배열에 대한 정보를 얻을 수 있습니다. 사용법을 설명하기 위해 아래에는 전달된 배열 A의 모든 요소의 합계를 반환하는 AddEmUp 함수의 텍스트가 나와 있습니다.

예를 들어 다음 연산자를 사용하여 위에 선언된 함수를 호출할 수 있습니다.

절차 WhatHaveIGot(["Text", 10, 5.5, @WhatHaveIGot, 3.14, true, "c"]);

함수나 프로시저에 상수 배열을 전달할 때 컴파일러는 전달된 모든 매개변수를 암시적으로 TVarRec 유형으로 변환합니다. TVarRec 데이터 유형은 시스템 모듈에서 다음과 같이 선언됩니다.

상수 배열은 다양한 유형의 데이터를 전달할 수 있으므로 수신된 매개변수를 처리하는 함수나 프로시저를 생성할 때 약간의 어려움이 발생할 수 있습니다. 이러한 배열을 사용하는 예로 결과 매개변수 배열의 요소를 살펴보고 해당 유형을 표시하는 WhatHaveIGot 프로시저의 구현을 고려해 보세요.

절차 WhatHaveIGot(A: const 배열); var i: 정수; TypeStr: 문자열; i:= Low(A)에서 High(A)로 시작합니다. A[i].VType of vtInteger: TypeStr:= "Integer"; vtBoolean: TypeStr:= "부울"; vtChar: TypeStr:= "Char"; vtExtended: TypeStr:= "확장"; vtString: TypeStr:= "문자열"; vtPointer: TypeStr:= "포인터"; vtPChar: TypeStr:= "PChar"; vtObject: TypeStr:= "개체"; vtClass: TypeStr:= "클래스"; vtWideChar: TypeStr:= "WideChar"; vtPWideChar: TypeStr:= "PWideChar"; vtAnsiString: TypeStr:= "AnsiString"; vtCurrency: TypeStr:= "통화"; vtVariant: TypeStr:= "변형"; vtInterface: TypeStr:= "인터페이스"; vtWideString: TypeStr:= "WideString"; vtInt64: TypeStr:= "Int64"; 끝;

ShowMessage(Format("배열 항목 %d은(는) %s입니다.", )); 끝; 끝;

기본 매개변수 값

Delphi에는 기본 매개변수 값을 사용하는 매우 유용한 기능이 있습니다. 프로시저나 함수 매개변수의 기본값을 설정할 수 있습니다. 이 값은 이 매개변수의 값을 지정하지 않고 프로시저나 함수를 호출하는 경우에 사용됩니다. 프로시저나 함수 선언에서 매개변수의 기본값은 매개변수 이름 뒤의 등호 뒤에 지정됩니다. 다음 예를 통해 이를 설명해 보겠습니다.

두 번째 경우에는 s 매개변수의 값만 설정하고 i 매개변수에는 기본값을 사용할 수 있습니다.

절차 HasDefVal("안녕하세요");
  • 기본 설정을 사용할 때 명심해야 할 몇 가지 규칙이 있습니다.
  • 기본값은 일반 유형, 포인터 또는 세트의 매개변수에만 할당할 수 있습니다.
  • 기본값은 값으로만 ​​전달되거나 수정자와 함께 전달될 수 있습니다. const. 참조 또는 유형이 지정되지 않은 매개변수일 수 없습니다.
기본 매개변수 값을 사용하는 중요한 이점 중 하나는 이전 버전과의 호환성을 유지하면서 기존 프로시저 및 함수의 기능을 쉽게 확장할 수 있다는 것입니다. 두 개의 정수를 더하는 기능이 핵심 요소인 프로그램이 소프트웨어 시장에 출시되었다고 가정해 보겠습니다.

지시문($X-)

($X-) 지시문은 함수를 프로시저로 호출하는 것을 금지합니다(반환 결과 무시). 기본적으로 이 모드는 활성화되어 있습니다(($X+)). 따라서 프로젝트 옵션 대화 상자의 컴파일러 탭에 있는 확장 구문 옵션이 선택 취소되거나 컴파일러 지시문($X-)이 지정된 경우 결과 변수의 사용이 허용되지 않는다는 점을 기억하십시오.

모든 Objecl Pascal 함수에는 반환 값을 보유하는 Result라는 지역 변수가 있습니다. 함수와 이름이 같은 변수에 값을 할당하여 함수에서 값을 반환할 수도 있습니다. 이는 이전 버전에서 보존된 Pascal 언어의 표준 구문입니다. 함수 본문에 이름이 있는 변수를 사용할 때 이 이름을 처리하는 데 큰 차이가 있다는 점을 잊지 마십시오. 모두 변수의 위치(대입 연산자의 왼쪽 또는 다른 위치)에 따라 다릅니다. 기능 텍스트. 대입문의 왼쪽에 함수 이름이 지정되면 함수의 반환 값이 대입된 것으로 간주됩니다. 다른 모든 경우에는 이 함수가 재귀적으로 호출된다고 가정합니다.

그것이 내가 오늘 당신에게 말하고 싶었던 전부입니다. 프로시저와 함수는 모든 프로그래밍 언어의 핵심 개념이며, 이것이 없이는 심각한 프로그램이 작동할 수 없습니다. 따라서 작업 메커니즘을 완전히 이해하는 것이 매우 중요합니다. 이는 전문성을 향한 또 다른 단계입니다. 이 기사가 조금이나마 도움이 되었기를 바랍니다. 프로그래밍을 즐기세요.



질문이 있으신가요?

오타 신고

편집자에게 전송될 텍스트: