현재 위치 - 대출자문플랫폼 - 외환 플랫폼 - MT4 프로그래밍: 함수를 배열로 반환하는 방법?

MT4 프로그래밍: 함수를 배열로 반환하는 방법?

방법 1: 글로벌 변수 분석 활용: C 언어의 지식 포인트로서 우리 모두 그 특징을 알고 있지만 글로벌 변수는 실제 교육 과정에서 광범위하게 적용되지 않습니다. 전역 변수의 범위는 변수 정의부터 프로그램 끝까지이므로 반환 값이 여러 개인 C 언어 함수를 작성하여 반환할 여러 값을 전역 변수로 정의할 수 있습니다. 함수가 호출되면 전역 변수가 변경되고 변경된 전역 변수 값을 주음 함수에 적용합니다. 함수가 호출된 후 변경되는 전역 변수 값은 함수의 여러 반환 값입니다. 이 방법의 적용은 예제를 통해 설명됩니다. 예 1: 함수를 작성하여 세 숫자의 최대값과 최소값을 구합니다. 메서드, 최대값과 최소값을 각각 두 개의 전역 변수 max 와 min 으로 정의하고 사용자 정의 함수에서 전역 변수 max 와 min 에 각각 최대값과 최소값을 할당합니다. 함수 호출 후 전역 변수의 최대값 및 최소값은 함수가 반환해야 하는 값을 저장합니다. 프로그램 참조 코드는 다음과 같습니다. # include "stdio.h" # include "conio.h" intmax, min/* 두 개의 전역 변수를 정의하여 함수 반환 값 */voidmax _ min 을 저장합니다 /* 초기화 최대값 및 최소값 */if (maxif (maxif (min >; B) min = b; If(min & gt;; C) min = c; } 메인 () {intx, y, z; Printf ("정수 3 개 입력: \ n"); Scanf("%d, %d, %d ",& ampx & amp;; Y & amp;; Z); Max_min(x, y, z); /* 최대값과 최소값을 찾는 함수 호출 */printf ("세 수 중 최대값은% d;; 최소값은 %d', 최대값, 최소값) 입니다. /* 출력 최대 및 최소 */getch (); 디버그 결과는 다음과 같습니다. 5, -6, 2 의 정수 3 개를 입력하십시오. 최대값은 5 입니다. 최소값은 다음과 같습니다. -6 참고: 이 방법은 여러 반환 값을 가진 함수를 구현할 수 있지만 전역 변수가 값의 정확성을 보장하지 않기 때문에 주의해서 사용해야 합니다. 전역 변수는 프로그램의 범위 내에서 값을 수정할 수 있습니다. 오류가 있으면 찾기가 어려울 수 있습니다.) 전역 변수는 프로그램의 모듈 간 커플링을 증가시킵니다. 방법 2: 배열 포인터 분석 전달: 교육 과정에서 C 언어의 함수 매개 변수 전달 방법에 값 전달과 주소 전달이 있다는 것을 알고 있습니다. 값을 전달할 때 주 함수는 실제 매개변수의 값을 쉐이프 매개변수에 복사하고, 쉐이프 매개변수는 주 함수가 전달한 값을 가져와서 함수를 실행합니다. 값 전달 중 호출되는 함수의 매개변수 값을 변경해도 실제 매개변수 값이 변경되지 않습니다. 그러나 주소 전달의 경우 전달 중 주소가 실제 인수에서 전달되기 때문에 호출된 함수에서 형식 인수 값을 변경하면 실제 매개변수 값이 직접 변경됩니다. 따라서 여러 반환 값을 배열로 배열 요소로 정의하고 배열의 주소를 함수의 형식 인수로 사용하여 주소별로 배열 인수를 전달하는 것을 고려해 볼 수 있습니다. 함수가 호출되면 형식 인수 그룹 요소의 변경으로 실제 매개 변수가 변경되고 변경된 실제 매개 변수 배열 요소에서 함수의 여러 반환 값을 얻습니다. 다음 예는 이 방법의 적용을 보여줍니다. 예 2: 1 차원 정수 배열의 최대값과 최소값을 구하는 함수를 작성하여 최대값과 최소값을 주 tone 함수로 반환합니다. 메서드: 포인터로 1 차원 배열의 주소를 전달한 다음 배열의 첫 번째 요소로 배열의 최대값을 교환하고 배열의 마지막 요소로 배열의 최소값을 교환합니다. 함수가 호출되면 인수 배열의 첫 번째 요소는 배열의 최대값이고 인수 배열의 마지막 요소는 배열의 최소값이므로 배열의 최대값과 최소값을 반환하는 기능을 구현합니다. 프로그램 참조 코드는 다음과 같습니다. # include "stdio.h" # include "conio.h" voidmax _ min (int * ptr, intn)/* 조회 배열 정의 /*j 최대 저장 위치, k 최소 저장 위치 */int * temp; /* 스왑 위치 */* temp = * ptr; For(I = 0;; I{if(*ptr*(ptr+i))/* 최소값이 마지막 요소와 교환 */{j = I; * temp = * (ptr+n-1); * (ptr+n-1) = * (ptr+j); * (ptr+j) = * temp; }}}/* max-min 함수 */main(){intA[6], I; For(I = 0;; 나<6; I++)scanf("%d ",& AMPA [I]); Max_min(A, 6); Printf("max=%d, min=%d\n\n ",A[0], a [5]); Getch (); } 디버그 결과는 다음과 같습니다. 공백으로 구분된 6 개의 정수를 입력하십시오. 58932-64max=32, min=-6 참고: 이 방법은 여러 반환 값의 데이터 유형이 일치하는 경우에 적용됩니다. 반환 값의 데이터 유형이 일치하지 않는 경우 이 메서드는 적용되지 않습니다.
copyright 2024대출자문플랫폼